reactjs - 如何防止 React Native 多次重新渲染
问题描述
目前我的组件正在渲染 4 次。看起来它正在为每个道具渲染。如果我删除除网络之外的道具,那么它只会渲染 1 次,但我确实需要其他道具。我在 componentDidUpdate 中使用 if 语句,因为我需要检测更改但是我渲染 4 次并且我的网络道具是相同的
export class Camera extends Component {
componentDidUpdate(prevProps, prevState){
if (prevProps.network !== this.props.network){
this.connect(this.props.network)
console.log('rendering')
}
}
connect=()=>{
//
}
render() {
return (
<View>
<Text>
Hello World
</Text>
</View>
)
}
}
export default function (props) {
return (
<Camera
navigation={props.navigation}
route={props.route}
network={React.useContext(NetworkContext)}
/>
);
}
解决方案
默认情况下,每次 props 发生变化时,React 都会重新渲染。这保证了 React 永远不会错过更新。如果您想减少渲染频率,请实现shouldComponentUpdate
和自定义验证器:
shouldComponentUpdate(nextProps, nextState) {
// Compare this.props / nextProps
// Compare this.state / nextState
// determine if update is needed
return true;
}
推荐阅读
- bigcommerce - 通过 API 获取字段选项
- php - 将 2 个日期之间的天数插入数据库
- python - Audiosegment 对象和波形文件/数据之间的转换
- web-applications - 作为创建 CMS 驱动的应用程序的工具,KeystoneJS 和 Strapi 之间的主要区别是什么?
- python - 将 JSON 数据从 Python 更新到 Firebase
- excel - 如何将 IF 语句条件应用于 Excel 中可见行的小计
- arduino - Arduino批量编程
- php - 如何将 laravel 数据库查询放入索引 php 数组中?
- elasticsearch - Elasticsearch:在布尔字段上搜索
- javascript - 我们可以在一个复选框上触发两个事件吗?单击一个来自 javascript,另一个来自代码隐藏