react异步获取的数据,如何根据异步数据设置对应的state合理?

描述: 比如异步获取初始化数据为1,则设置state.isShow为true否则为false;
render函数里根据state.isShow设置是否渲染元素A,并渲染一个有click事件的元素B切换state.isShow

问题: 比如我在componentWillUpdate里判断异步获取的初始化数据设置state.isShow为true,但是这样我的click切换将会失效,因为每次更新时都会根据初始化数据1设置state.isShow为true,我就必须在判断异步数据之前加上if (this.state.isShow != nextState.isShow) return; 虽然这样可以实现,但是我感觉实现方式不够简洁,如果有很多个类似isShow我就要写好多个判断。

想知道合理的实现方式是怎样?应该在哪个生命周期里判断异步获取的数据或者在接受到props传来的异步数据后应该怎样做?

阅读 2.6k
1 个回答

componentWillUpdate是组件在非第一次即将render时执行,所以componentWillUpdate不可能及时的获取到的异步数据
异常数据的改变是props,所以应该放在componentWillReceiveProps中。

根据你的描述呢,直接把isShow作为props放到render中就可以了。没必要将props先转化为state,再处理。因为props改变时,component也会render的。

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