关于 shouldComponentUpdate 的优化时机问题

我们都知道react 有一个 shouldComponentUpdate 来优化视图更新的,判断在需要更新的时候让视图更新,那么问题来了,什么时候该用这个优化呢,一般数据更新,不都得跟新视图吗?

阅读 3.7k
4 个回答

一般会直接使用 pureComponent 来进行优化. 对于对象, 数组, 若有修改, 每次都要生成一个新的引用.

通常都是用来写什么情况下不需要更新视图的,避免一些不必要的更新。你可以先在这个函数里打印一些信息,看看都在什么情况下会进这个函数,然后再优化,去掉一些不必要更新的情况。

当你觉得,被改变的state或者props,不需要更新视图时,你就应该思考要不要使用它。

需要注意的一个地方是:改变之后,又不需要更新视图的状态,也不应该放在state中。

shouldComponentUpdate的使用,也是有代价的。如果处理得不好,甚至比多render一次更消耗性能。慎用!

可以使用 @welldone-software/why-did-you-render 检测不必要的重复渲染,比如 props 中有 object,可能存在多次 render 时 different objects that are equal by value,即 props 值实际上没有变化,但是引用类型的问题导致浅比较时不相等,就会 update

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题