美文网首页
React生命周期

React生命周期

作者: fb941c99409d | 来源:发表于2019-03-27 20:33 被阅读0次

https://www.cnblogs.com/gdsblog/p/7348375.html 写的很好的一篇文章

image
  1. 组件的三个生命周期状态:
* Mount:插入真实 DOM
* Update:被重新渲染
* Unmount:被移出真实 DOM
  1. React 为每个状态都提供了两种勾子(hook)函数,will 函数在进入状态之前调用,did 函数在进入状态之后调用
* componentWillMount()
* componentDidMount() : 已插入真实DOM, 在render之后才会执行
* componentWillUpdate(object nextProps, object nextState)
* componentDidUpdate(object prevProps, object prevState)
* componentWillUnmount()
  1. 生命周期流程:
1. 第一次初始化渲染显示: render()
      * constructor(): 创建对象初始化state
      * componentWillMount() : 将要插入回调
      * render() : 用于插入虚拟DOM回调
      * componentDidMount() : 已经插入回调
2. 每次更新state: this.setSate()
      * componentWillUpdate() : 将要更新回调
      * render() : 更新(重新渲染)
      * componentDidUpdate() : 已经更新回调
3. 删除组件
      * ReactDOM.unmountComponentAtNode(document.getElementById('example')) : 移除组件
      * componentWillUnmount() : 组件将要被移除回调
4. 注意:
     * 一般会在componentDidMount()中: 开启监听, 发送ajax请求
     * 可以在componentWillUnmount()做一些收尾工作: 停止监听
     * componentWillReceiveProps:当props发生变化时执行,初始化render时不执行
class App extends React.Component{
  constructor(props){
    super(props);
    this.state = {
      person:{
        name:'kobe',
        age:18,
      }
    }
    this.num=0;
    console.log('constructor()');
  }
  componentWillMount(){
    console.log('componentWillMount()组件将要被挂载');
    //开定时器更新state
    this.timer=setInterval(()=>{
      this.setState({
        person:{
          name:"mary",
          age:++this.num,
        }
      });
    },100);
  }
  componentDidMount(){
    console.log('componentDidMount()组件挂载完毕');
    //卸载组件
    setTimeout(()=>{
      ReactDOM.unmountComponentAtNode(document.getElementById('example'));
    },4000);
  }
  componentWillUpdate(){
    console.log('componentWillUpdate() 组件将要更新');
  }
  componentDidUpdate(){
    console.log('componentWillUpdate() 组件更新完毕');
  }
  componentWillUnmount(){
    console.log('componentWillUnmount() 组件将要被卸载');
    //组件卸载前 做收尾工作 如 清除定时器
    clearInterval(this.timer);
  }
  render(){
    console.log('render()');
    let {person} = this.state;
    return (
      <div>
          {person.name}---{person.age}
      </div>
    );
  }
}
ReactDOM.render(<App />,document.getElementById('example'));
</script>

相关文章

  • React概念图

    React概念图 React组件生命周期概念图 参考文档:React入门教程 组件生命周期React:组件生命周期...

  • React基础篇之组件的生命周期

    引出生命周期 react生命周期(旧) react生命周期(新) getSnapshotBeforeUpdate的...

  • React生命周期

    React v16.0前的生命周期 React v16.4+ 的生命周期图 React v16.9后这些生命周期钩...

  • React v16 生命周期

    React 16 生命周期 React 16.3 新增的生命周期方法 逐渐废弃的生命周期方法: 一般将生命周期分成...

  • 学习并实现react (4)

    实现生命周期 生命周期介绍 React 生命周期图 React 子组件在父组件下的生命周期流程 实现 compon...

  • React面试题 整理脑图

    react基础 React生命周期 react-router react进阶 react Hooks redux 其他

  • react/vue常见问题整理

    一、react 1. react生命周期 react 16生命周期相对于15的变化:componentWillMo...

  • React 组件生命周期

    组件生命周期 参考阅读: component-lifecycle react组件生命周期过程说明 react 组件...

  • 《深入React技术栈》学习笔记Ⅲ

    以下的生命周期都是在 React 15 的生命周期, React 16 的生命周期 API 已经发生变化。Reac...

  • React总结

    [toc] 1.React组件生命周期 1.1 生命周期图 组件的生命周期的图如下: 具体可参考React 组件生...

网友评论

      本文标题:React生命周期

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