react 小书笔记--生命周期

433 阅读3分钟

目的:

  • 学习 react 生命周期

针对对象:

  • react 初学者

关键词:

  • mount : 挂载
  • render: 渲染

react 生命周期

1、理解 react 组件渲染过程

  • 来看一段代码
import Home form './home';

ReactDOM.render(
 <Home />, 
  document.getElementById('root');
)

分析: 其实我们把 Home 组件传给了 React.createElement 函数,又把函数返回结果传给了 ReactDOM.render。下面可以简单的假设一下函数都干了什么吗👇

// 实例化一个组件

const home = new Home(props,childern);

// 调用 render 方法

const homeJsxObject = home.render();

// ReactDOM 用渲染后的 JavaScript 对象来构建真正的 DOM 元素

createDOMFromObject(homeJsxObject)

// ReactDOM 把 DOM 元素塞到页面上面

document.getElementById('root').appendChild(headerDOM)

2、组件的挂载

  • 根据上面的例子,引出一个非常重要的概念。

  • 我们把 react.js 组件的渲染,并且构造 DOM 元素然后塞入页面的过程称为组件的挂载

  • 2.1 你可以这么去理解组件的初始化的过程


// 初始化组件
constructor();

// 挂载和渲染
render();

// 构造 DOM 结构插入页面
document.createElement()
document.getElementById('root').appendChild()
  • 2.2 当然由于真正的组件构成初始化,挂载到页面的过程比较复杂,所以 react 添加了几个方法,让我们更好的使用这个过程。
-> constructor()
-> componentWillMount()
-> render()
// 然后构造 DOM 元素插入页面
-> componentDidMount()

componentWillMount 和 componentDidMount 都是可以像 render 方法一样自定义在组件的内部。挂载的时候,React.js 会在组件的 render 之前调用 componentWillMount,在 DOM 元素塞入页面以后调用 componentDidMount。

我们给组件加上这两个方法

class Hoem extends Component {
  constructor () {
    super()
    console.log('construct')
  }

  componentWillMount () {
    console.log('component will mount')
  }

  componentDidMount () {
    console.log('component did mount')
  }

  render () {
    console.log('render')
    return (
      <div>
        <h1 className='title'>Hello React</h1>
      </div>
    )
  }
}
  • 然后在控制台看看
construct
component will mount
render
component did mount
  • 当然我们可以将组件插入页面,当然也可以删除,很多情况下,会在组件销毁的时候进行一定的操作,所以这个 react 也帮我们定义了函数实现。
-> constructor()
-> componentWillMount()
-> render()
// 然后构造 DOM 元素插入页面
-> componentDidMount()
// ...
// 即将从页面中删除
-> componentWillUnmount()
// 从页面中删除
  • 上面的 componentWillUnmount() 就是在组件删除前会调用的函数

  • 下面有个 demo 可以看看组件在删除的效果。

Edit q7nw889w54

  • 点击上面的👆,打开在线编辑工具的 console 看一下出现了什么,然后再点一下组件中的出现和隐藏按钮。看看 console 的变化情况。

总结

  • React.js 将组件渲染,并且构造 DOM 元素然后塞入页面的过程称为组件的挂载。我们学习了 React.js 控制组件在页面上挂载和删除过程里面几个方法:

    • componentWillMount:组件挂载开始之前,也就是在组件调用 render 方法之前调用。
    • componentDidMount:组件挂载完成以后,也就是 DOM 元素已经插入页面后调用。
    • componentWillUnmount:组件对应的 DOM 元素从页面中删除之前调用。

但这一节并没有讲这几个方法到底在实际项目当中有什么作用,下一篇通过例子来讲解一下这几个方法的用途。

引用

react 小书

react 官网