美文网首页
React生命周期、组件声明、性能优化

React生命周期、组件声明、性能优化

作者: 与你清欢_李 | 来源:发表于2019-03-31 16:46 被阅读0次
  • 生命周期
class App extends Component {
    constructor(props) {
      super(props);
      console.log('组件实例化时');
    }
    componentWillMount = () => {
      console.log('组件渲染前');
    }
    render(){
        console.log('组件渲染');
        return <div></div>
    }
    componentDidMount = ()=>{
        console.log('组件首次渲染后,只触发一次');
    }
    componentWillReceiveProps = (nextProps)=>{
        console.log('组件的props更新',nextProps);
        console.log('本函数调用完去 shouldComponentUpdate');
    }
    // 性能优化点
    shouldComponentUpdate = (nextProps,nextState)=>{
        console.log('当state发生变化时||当props发生变化时');
        console.log('需要有返回值,如果是false,则不更新组件')
    }
    componentWillUpdate = ()=>{
        console.log('组件更新前');
    }
    //之后再次render
    componentDidUpdate = ()=>{
        console.log('组件更新后');
    }

    componentWillUnmount = ()=>{
        console.log('组件销毁前');
    }
}
  • 声明组件
//1.函数定义 
// 优势:组件不会被实例化,整体渲染性能得到提升
// 劣势:组件内不能访问this,没有生命周期,除了渲染和处理事件之外几乎什么也不能做
const Hello = (props)=>(
    <div>
        <span>{props.name}</span>
    </div>
)

// 2.类声明
// 优势: 是react 组件标准写法,也能使用上react组件的所有功能,有完整的生命周期..
// 劣势:需要支持ES6,会产生自己的实例,以及this

class IndexPage extends Component {
  state = {
    name:123
  }
  componentDidMount(){
    const that = this;
    setTimeout(()=>{
      that.setState({
        name:"123"
      })
    },1500);  
  }
  change(e){
    this.setState({
      input:e.target.value.trim()
    })
  }
  render() {
    return (
      <div>
          <IndexPage2 text={this.state.name}></IndexPage2>
      </div>
    )
  }
}
  • 事件绑定
//1.手动绑定this,否则无法读取this 
onClick={this.headClick}
=> //推荐,性能高,只绑定一次 ,但是无法传参
constructor(props){
    super(props);
    this.headClick = this.headClick.bind(this);
}
//=> 不建议,因为这里事件需要注册好几次,可以穿参
onClick={this.headClick.bind(this,...args)}
// => 有参数 推荐写法 利用箭头函数的特性修改this,且可以传入参数
onClick={e=>this.headClick(e,...args)}

  • JSX
// JSX 本身其实也是一种表达式
// JSX 代表 Objects
// Babel 转译器会把 JSX 转换成一个名为 React.createElement() 的方法调用。

cosnt hello = ()=>(
    <div className="22">hello World</div>
);


// => JSX

const hello  = React.createElement(h1,{className:"22"},"helloWorld");

  • 性能优化
// 虚拟化长列表 使用 react-window || react-virtualized 来辅助实现

// 使用 shouldComponentUpdate 来处理,你并非每一次都要更新

// 每次一 state 的更新都返回新的对象

相关文章

  • React生命周期、组件声明、性能优化

    生命周期 声明组件 事件绑定 JSX 性能优化

  • 【React.js 20】React性能优化

    React性能优化 React性能优化主要分三块: React 组件性能优化 属性传递优化针对单组件性能优化,很多...

  • 深入浅出React和Redux学习笔记(五)

    React组建的性能优化 性能优化的方法: 单个React组件的性能优化; 多个React组件的性能优化; 利用r...

  • Redux源码剖析

    前面写了《React组件性能优化》《Redux性能优化》《React-Redux性能优化》,但是都没有从这些框架的...

  • React 组件性能优化

    React 组件性能优化最佳实践 React 组件性能优化的核心是减少渲染真实 DOM 节点的频率,减少 Virt...

  • React-Redux性能优化

    前面写了两篇文章《React组件性能优化》《Redux性能优化》,分别针对React和Redux在使用上的性能优化...

  • 组件的性能优化 - 01.单组件性能优化

    组件的性能优化 - 01.单组件性能优化 本文主要关注在React组件的性能优化的相关知识和原理上,便于对Reac...

  • React的生命周期

    图示中文教程类组件有生命周期,函数式组件没有声明周期(所以函数式组件的性能更高) 完整图示 常用图示 React组...

  • React Hook

    React 声明组件的方式 Class声明和函数式声明(无状态组件)。Class声明可以操作state、生命周期等...

  • 05|React组件的性能优化

    本文主要是针对性能优化做介绍,对应的React本身性能就比较不错!要介绍的点如下: 单个React组件的性能优化 ...

网友评论

      本文标题:React生命周期、组件声明、性能优化

      本文链接:https://www.haomeiwen.com/subject/cfrubqtx.html