react 类组件避免无意义渲染提高组件性能

    技术2022-07-11  100

    当组件重新渲染时,会浅比较(如比较引用)props和state,如果发生改变就重新渲染组件,当不改变就不渲染组件 当使用Component时,只要改变了props/state,不管内容是否变化,都会渲染组件 方案一: 在组件中添加shouldComponentUpdate生命周期函数,对数据进行把控后再决定是否渲染 shouldComponentUpdate(nextProps,nextState) { if(nextProps.xx===this.props.xx) { return false; }else if(nextState.xx===this.state.xx) { return false; }else{ return true; } } 方案二: 类组件: 将Component替换成PureComponent PureComponent内置了shouldComponentUpdate,组件中不能再写shouldComponentUpdate 当使用PureComponent时,建议使用immutable.js来管理数据 原因: redux中使用immutable.js会每次重新返回immutable对象 若只是js,如果只改变了对象属性等,会因为引用没改变,不触发render渲染 函数组件: const xx=React.memo(函数) export default xx;

    代码示例:

    import React,{PureComponent} from 'react' import { WriterWrapper } from '../style'; class Writer extends PureComponent{ render() { return( <div> <WriterWrapper>writer</WriterWrapper> </div> ) } } export default Writer
    Processed: 0.012, SQL: 9