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

来源:9-6 结果列表

Friday__

2017-05-24

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

写回答

1回答

双越

2017-05-24

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

0
1
Friday__
老师说的是fetch到数据后然后setState吧,这里我就没搞明白,为什么需要在didMount中。因为在willMount中感觉更复合逻辑 因为第一我并不需要真实的dom节点获取什么东西,第二在willMount中fetch数据后再调用setState如果是先拿到数据再render的会少render一次(当然这种情况基本没有),但是就算是先用初始state去render一遍然后才异步的拿到数据setState再render一遍,本质上跟在didMount中也是一样的呀,并且在willMount里先fetch的很可能拿到数据更快呀
2017-05-24
共1条回复

React高级实战 打造大众点评Web App

已经对React Router4与Webpack2进行了项目升级

1711 学习 · 707 问题

查看课程