setState
今天发现有很多文章在说setState的坑,吐槽之声也不少.其实我就碰到过一个 setState不会立即改变数据:
1 | this.setState({ |
所以如果需要获取,就需要在回调函数里去做:
1 | this.setState({ |
这样才会如你所预料那般的输出.
setState多次,re-render一次
这个是我始料未及的了,我一直以为每次setState都会造成一次re-render.其实并不是这样.
1 | componentDidMount(){ |
可以发现,这里只会出现render两次,而不是想象中的4+1(初始化的render).
总结.
setState操作, 默认情况下是每次调用, 都会re-render一次, 除非你手动shouldComponentUpdate为false.
react为了减少rerender的次数, 会进行一个浅合并. 将多次re-render减少到一次re-render.
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kwin 's Blog!
评论