javascript - 在 React 中渲染复杂布局的最佳方法是什么
问题描述
我有两个基于布尔条件更改的布局。条件的名称是showMap
。所以这就是我正在做的事情。
<Grid container xs={12} md={If(props.showMap, 4, 12)}
lg={If(props.showMap, 4, 12)}
xl={If(props.showMap, 3, 12)}
spacing={If(props.showMap, 0, 2)} item={true}>
.....
</Grid>
并且有很多这样编写的代码(嵌套在网格内)以避免代码重复。但它影响了性能,因为重新渲染和更改布局需要一些时间。
在 React 中这种类型的条件复杂渲染有更好的方法吗?
的实现If
如下:
function If(value, ifTrue, ifFalse) {
return value ? ifTrue : ifFalse
}
解决方案
您可以定义两个配置常量,一个用于 showMap 为 true 时的值,一个用于 false 时的值
在渲染里面你可以做 `let gridConfig = { this.props.showMap ? 配置1:配置2}
返回网格时,只需执行lg={gridConfig.lg}
这将减少IF
调用次数,但不幸的是,每当状态更新反应重新渲染时。所以我不确定是否IF
导致性能问题
推荐阅读
- ruby-on-rails - 如何合并两个 ActiveRecord 对象,包括关联
- r - 根据值将逗号分隔的数字列拆分为多列
- php - 将三个函数的输出组合在一个类中,然后显示最终输出
- javascript - How can I get a unique set from two arrays that removes the second occurance of an item by a key's value, not the first like Lodash uniqueBy does?
- java - Javamail 双周 gmail 日历邀请以 ICS 文件形式出现
- google-sheets - Google 表格 IF 功能
- sql - Iterated sub sampling against distinct values, union results
- crystal-reports - 水晶报表:运行总计:计算公式
- regex - htaccess rewrite redirect with parameters in subfolder
- c# - OAEP 填充与 CreateSignature