javascript - 在 REACTJS 中的函数的渲染中显示结果
问题描述
我想渲染文本“结果!” 以及largestLikeResult
我的getLargest()
函数的名称。
getLargest() {
var largestLikeResult = null
var largerstLikeNum= 0
if(this.props.results!=null){
//.map goes through every result
this.props.results.map(i=> {
console.log(i.name)
this.state.resultsRef.child(this.replaceAll("."," ",i.name)).once('value',function(snapshot) {
if(largerstLikeNum<snapshot.val().right)
{
console.log("new largest in town")
largerstLikeNum = snapshot.val().right
largestLikeResult= i.name
console.log(largestLikeResult)
}
})
})
return (
<div>
{largestLikeResult}
</div>
)
}
else {
return null
}
}
render(){
return (
<div>
Results!
<h1>{this.getLargest()}</h1>
</div>
)
}
}
export default DisplayResults
目前,只有结果!显示在页面上,并且名称largestLikeResult
显示在控制台中,而不是页面中。我可以添加任何快速更改render()
以显示largestLikeResult
?
提前致谢!
解决方案
为了快速更改,我认为如果您从更改map
为forEach
它会正常工作:
this.props.results.forEach(i => {
但我建议将getLargest()
功能重构为类似于以下内容:
getLargest() {
let largerstLikeNum = 0;
const { results } = this.props;
const { resultsRef } = this.state;
// Always return early
if (!results || !Array.isArray(results)) {
return null;
}
return (
<div>
{
results.map(i => {
return resultsRef.child(this.replaceAll('.', ' ', i.name)).once('value', snapshot => {
if (largerstLikeNum < snapshot.val().right) {
console.log('new largest in town');
largerstLikeNum = snapshot.val().right ;
return (
<div>{i.name}</div>
);
}
return null;
})
})
}
</div>
);
}
推荐阅读
- actionscript-3 - AS3 中的条件函数
- database - Laravel assertDatabaseMissing 奇怪的行为
- c++ - 在构造函数中注册weak_ptr观察者
- arrays - psql:更新由字符串数组组成的列,合并另一个字符串数组并删除重复项
- android - 是否可以使用 constraintDimensionRatio 和 height/width match_parent 绘制布局,同时将布局的顶部和底部约束到一个点
- html - 在 Panel-body 内具有绝对位置的 Div
- javascript - 遍历 html 表并获取 javascript 中每一行的行号
- c# - 带有单选的 ASP.NET Core MVC 下拉框
- html - SVG - 带有图像背景的图案 - 图像填充不一样 - 适应它们包含的形状
- sql - 如何进行海量选择 SAP ABAP