React笔记——核心概念:5.State&生命周期

1、计时器示例

  • 函数组件

  • 将函数组件转换成class组件

    • 1.创建一个同名的 ES6 class,并且继承于 React.Component

    • 2.添加一个空的 render() 方法。

    • 3.将函数体移动到 render() 方法之中。

    • 4.在 render() 方法中使用 this.props 替换 props

    • 5.删除剩余的空函数声明。

2、State计时器

  • 在多组件应用程序中,组件被销毁时释放所占用的资源是非常重要的

  • 挂载(mount):

    • 组件第一次被渲染到DOM中

    • componentDidMount()

  • 卸载(unmount):

    • DOM中组件被删除时

    • componentWillUnmount()

  • class字段

    • this.propsthis.state是React本身设置的,有特殊含义

    • timerID是额外字段,可随意添加不参与数据流

3、State

  • State 与 props 类似

  • State 是私有的

  • 完全受控于当前组件

  • 不可直接修改State

    • this.setState({ comment: 'Hello' })

4、State的更新可能是异步的

  • 因为 this.propsthis.state 可能会异步更新,所以你不要依赖他们的值来更新下一个状态。

  • 解决方法:让setState()接收一个函数,而不是一个对象

5、State的更新会被合并

  • 浅合并:

    • this.setState({comments}) 完整保留了 this.state.posts, 但是完全替换了 this.state.comments

6、数据是向下流动的

  • state的私有性:

    • state 为局部的或是封装的

    • 除了拥有并设置了它的组件,其他组件都无法访问。

    • 从该 state 派生的任何数据或 UI 只能影响树中“低于”它们的组件