react学习笔记

2018/05/17 react

开始记录每章的学习,了解简单的react通讯

React 和 jquery的不同

jQ即可的方式直观易懂,对于初学者十分适用,但是当项目逐渐变得庞 大时,用 jQuery 写出的代码往往互相纠缠, 1-4.png

使用 React 的方式,就可以避免构建这样复杂的程序结构,无论何种事件,引发的 都是 React 组件的重新渲染,至于如何只修改必要的 DOM 部分,则完全交给 React 去操 作,开发者并不需要关心.

1-5.png

React的生命周期

1.父子组件之间传值

父组件向子组件通过prop来传递数据 例:子组件可通过this.props.a获得a的值。

<Example a={10}/>

子组件通过函数的方式向父组件传值。

<Example onUpdate={this.onUpdate}/>

2.组件中的状态用state记录。

通常在构造函数时,使用this.state进行赋值,在需要改变状态时,通过this.setState来进行状态改变,而后渲染界面,setState是一个异步的函数,如果在同一个函数里读取state,将会得到未改变的值例:

constructor(props) {
    super(props);
    this.onClickButton = this.onClickButton.bind(this);
    this.state = { count: 0 };
}

onClickButton() {
    this.setState({count:++this.state.count});
    // console.log(this.state.count) == 0;
}

如果需要同步获取,可使用 Promise 或者 async/await 来将 setState 变为同步函数

3.生命周期

React 严格定义了组件的生命周期,生命周期可能会经历如下三个过程:

装载过程(Mount ),也就是把组件第一次在 DOM 树中渲染的过程;

更新过程(Update ),当组件被重新渲染的过程;

卸载过程(Unmount ),组件从 DOM 中删除的过程;

每个过程都有一些相对应的函数。

装载过程调用以下几个函数

  • constructor: 类构造函数
  • getlnitialState: ReactClass的状态初始化(ES6不触发)
  • getDefaultProps: ReactClass获得默认props(ES6不触发)
  • componentWillMount: 装载渲染前调用
  • render: 描述即将渲染JSX的函数
  • componentDidMount: 渲染成功后调用(仅浏览器端调用)

更新过程调用以下几个函数:

  • componentWillReceiveProps: 调用render后被调用
  • shouldComponentUpdate: 是否需要渲染组件
  • componentWillUpdate: 重新渲染前调用
  • render: 描述即将渲染JSX的函数
  • componentDidUpdate: 重新渲染成后调用

卸载过程只有一个函数:

  • componentWillUnmount: Dom树删除之前调用

Search

    Table of Contents