请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

setState是不是不该在DidUpdate这里调用?

我用了airbnb的语法检查,我发现airbnb不论是didMount还是didUpdate都不推荐去setState,我具体研究了下好像也觉得不该在这两个生命周期中调用setState,didMount中调用会造成2次render,而didUpdate感觉会是一个死循环啊,因为setState的时候就didUpdate然后又会setState,不知道为什么没报错,我感觉这里是不是应该在componentWillReceiveProps这个生命周期中调用更好啊    

正在回答 回答被采纳积分+3

1回答

双越 2017-05-24 23:02:52

是这样的,setState 是我们从服务器获取数据之后,将数据存储到 state 中然后出发 React 的组件更新,显示数据。所有,必须保证组件都渲染完成之后才能这么做,因此放在 didMount 中

0 回复 有任何疑惑可以回复我~
  • 提问者 Friday__ #1
    老师说的是fetch到数据后然后setState吧,这里我就没搞明白,为什么需要在didMount中。因为在willMount中感觉更复合逻辑
    因为第一我并不需要真实的dom节点获取什么东西,第二在willMount中fetch数据后再调用setState如果是先拿到数据再render的会少render一次(当然这种情况基本没有),但是就算是先用初始state去render一遍然后才异步的拿到数据setState再render一遍,本质上跟在didMount中也是一样的呀,并且在willMount里先fetch的很可能拿到数据更快呀
    回复 有任何疑惑可以回复我~ 2017-05-24 23:40:52
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信