reactjs - 在 React 中计算两个累积值的分数的优雅方法
问题描述
我对 React 还不是很流利,我应该扩展现有的代码。在一个render()
函数中,我发现了以下内容:
const myStyle = { float: "right", color: "red"} as React.CSSProperties;
<myComponent myProperty={
() => {
return <div style={myStyle}>
{(((this.props.myData)) ? "Total var1: ".concat(
this.props.myData.reduce(function (prev, cur) {
return prev + cur.VarOne;}).toString(),
" Total var2: ",
this.props.myData.reduce(function (prev, cur) {
return prev + cur.VarTwo;}).toString(),
" var1/var2: TBD"
) : null )} </div>
}
}
/>
所有这些都没有问题。但是,我现在想计算分数var1/ var2
,并输出它。我该如何做到这一点,而无需再次扫描.reduce()
所有记录?
任何帮助表示赞赏!我什至不知道该搜索什么,这就是为什么我要打扰你们所有人。
背景资料
myData
似乎是自定义记录的(嵌套)列表:
export interface DataViewTableProps {
selectedDate: any,
myData: Interfaces.myDataEntry[],
}
export interface myDataEntry{
PositionId: number,
PositionName: string,
Value: number,
children: myDataEntry[],
}
解决方案
由于您要对同一个数组进行两次迭代,因此您可以使用 forEach 一次完成所有计算:
const myData = this.props.myData;
let first = 0;
let second = 0;
myData.forEach(entry => {
first += entry.VarOne;
second += entry.VarTwo;
});
const tbd = first / second;
让你的 React 代码更简洁的方法是提取函数return
区域之外的所有计算。render
所以不要这样做:
render() {
return (
<div>{ // compute the output here}
</div>
)
}
最好这样做:
render() {
const myOutput = // compute the output here
return (
<div>{myOutput} </div>
)
}
推荐阅读
- django - Nginx 作为反向代理 django gunicorn 返回 400 错误请求
- vba - 仅导出 Powerpoint VBA 中某个部分内的幻灯片
- r - 为什么`v.names`帮助`reshape()`在熔化数据时猜测时变变量?
- php - 如果在范围内找到 start_time 和 end_time 范围,然后检查 start_date 和 end_date
- r - 从需要使用 R 进行身份验证的 OPenDAP ncml 获取聚合数据
- javascript - Angular 2+ 多选:将 UI 更改为下拉
- python - 通过 Scrapy-Splash 将真实 URL 传递给字典
- django - 如何修改 Django TestCase 中特定测试方法的数据库连接(然后在完成后恢复)?
- asp.net-mvc - 如何从 Ajax 将具有多个值的 json 对象发布到控制器
- nativescript - 不支持 Blob 类型