3 回答
TA贡献1725条经验 获得超7个赞
您可以使用
应该组件更新
以避免这种情况。它适用于道具和状态。
shouldComponentUpdate(nextProps, nextState) { return this.props.somevalue != nextProps.somevalue; }
检查是否有任何新的道具传递给孩子。如果不是,则组件不会重新渲染。但是要避免使用太多的孩子,并想出一个更好的设计结构。
编辑:
您可以使用
纯组件
因为它默认实现了 shouldComponentUpdate。如文档中所述:
React.PureComponent 类似于 React.Component。它们之间的区别在于 React.Component 没有实现 shouldComponentUpdate(),但是 React.PureComponent 通过浅层 prop 和状态比较来实现它。
如果您的 React 组件的 render() 函数在给定相同的道具和状态的情况下呈现相同的结果,则在某些情况下您可以使用 React.PureComponent 来提高性能。
TA贡献1777条经验 获得超10个赞
React 中的默认行为是在每次状态更改时重新渲染,在绝大多数情况下,您应该依赖默认行为。但是当你想在状态改变时阻止组件的重新渲染并且状态的一些值作为道具传递给子组件时你可以利用shouldComponentUpdate
shouldComponentUpdate() 在接收到新的道具或状态时在渲染之前被调用。默认为真。初始渲染或使用 forceUpdate() 时不会调用此方法。
在这里学习更多
要阻止重新渲染,您应该在中执行检查shouldComponentUpdate
以确保以前的道具和当前道具不相同。如果它们相同。您通过返回阻止重新渲染false
,如果它们不同,您返回true
将触发重新渲染。
或者你可以使用备忘录
TA贡献1883条经验 获得超3个赞
您可以使用React.memo(component) 这是从异常渲染中保存您的组件。阅读这个https://reactjs.org/docs/hooks-reference.html#usememo
添加回答
举报