purecomponent的适用场景
- 父元素多次setstate,某子元素A的render不变,这时A需要继承purecomponent,例如一个页面组件里有一个大数据tree,可以让tree继承purecomponent,页面其他位置发生交互就不会让tree重新render了
- 某元素A需要多次setstate,但是需要它只render一次时,这时A需要继承purecomponent
- 父元素多次setstate,某子元素A的render不变,componentWillReceiveProps变,这时A需要继承purecomponent
component的场景
除上述3点外的其他场景
purecomponent和component的所有场景
(1)存在父组件F,F的子组件A,当父组件执行setstate后,父影响子:
- 继承component的父元素state改变多次会重新render多次,继承component的子元素会重新render多次,componentWillReceiveProps多次
- 继承purecomponent的父元素state改变多次会render一次,继承component的子元素会render一次,componentWillReceiveProps一次
- 继承component的父元素state改变多次会重新render多次,继承purecomponent的子元素会render一次,componentWillReceiveProps多次
- 继承purecomponent的父元素state改变多次会render一次,继承purecomponent的子元素会不render,componentWillReceiveProps一次
总结父影响子
父setstate,进入存在期,判断pure还是普通component,比较前后state,一致不render,不一直render;render时,子元素进入存在期间,判断pure还是普通component,比较前后props,一致不render,不一直render;
(2)存在父组件F,F的子组件A,当子组件执行setstate后,子影响父:
- 继承component的子元素state改变多次会重新render多次,父元素不进存在期间,不render
- 继承purecomponent的子元素state改变多次会render一次,父元素不进存在期间,不render