react的component和purecomponent

263 阅读1分钟

purecomponent的适用场景

  1. 父元素多次setstate,某子元素A的render不变,这时A需要继承purecomponent,例如一个页面组件里有一个大数据tree,可以让tree继承purecomponent,页面其他位置发生交互就不会让tree重新render了
  2. 某元素A需要多次setstate,但是需要它只render一次时,这时A需要继承purecomponent
  3. 父元素多次setstate,某子元素A的render不变,componentWillReceiveProps变,这时A需要继承purecomponent

component的场景

除上述3点外的其他场景

purecomponent和component的所有场景

(1)存在父组件F,F的子组件A,当父组件执行setstate后,父影响子:

  1. 继承component的父元素state改变多次会重新render多次,继承component的子元素会重新render多次,componentWillReceiveProps多次
  2. 继承purecomponent的父元素state改变多次会render一次,继承component的子元素会render一次,componentWillReceiveProps一次
  3. 继承component的父元素state改变多次会重新render多次,继承purecomponent的子元素会render一次,componentWillReceiveProps多次
  4. 继承purecomponent的父元素state改变多次会render一次,继承purecomponent的子元素会不render,componentWillReceiveProps一次
总结父影响子

父setstate,进入存在期,判断pure还是普通component,比较前后state,一致不render,不一直render;render时,子元素进入存在期间,判断pure还是普通component,比较前后props,一致不render,不一直render;

(2)存在父组件F,F的子组件A,当子组件执行setstate后,子影响父:

  1. 继承component的子元素state改变多次会重新render多次,父元素不进存在期间,不render
  2. 继承purecomponent的子元素state改变多次会render一次,父元素不进存在期间,不render