componentWillReceiveProps需要判断props吗

问题描述

之前看到同事写的组件里componentWillReceiveProps方法里做了判断如下 想知道到底有没有必要 记得父组件更新会导致子组件componentWillReceiveProps和shouldComponentUpdate一定触发 所以即使在componentWillReceiveProps里判断了不setState也会触发shouldComponentUpdate的 不知道我的理解对不对 望大神解答到底有没有必要写这一层判断

类似代码

if (this.props.x !== nextProps.x) {
    this.setState({...})
}

阅读 3.8k
3 个回答

自己搜了下文档 结论如下 希望之后有大佬看到错误处指正

1 没必要判断 因为props改变必定会触发生命周期shouldComponentUpdate 此时是否setState不影响生命周期过程 区别只是setState的shouldComponentUpdate生命周期会被reactjs合并为一次
2 如果有需要的话可以使用pureComponent或在shouldComponentUpdate中shallowEqual来取消重新渲染

shouldComponentUpdate没返回false就会rerender的 看下那个setState里是不是设置了其他的东西

"所以即使在componentWillReceiveProps里判断了不setState也会触发shouldComponentUpdate的",不懂你意思,你不setState, state不变化,你更新什么

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