React生命周期与属性方法绑定

56 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第27天,点击查看活动详情

组件的生命周期

在组件创建,加载到页面上运行以及组件被销毁的过程中,在组件特定时期触发的事件

组件的创建阶段

componentWillMount 组件将要被挂载,还没有开始渲染虚拟DOM

render 渲染真正的虚拟DOM

componentDidMount 组件完成挂载,组件已经显示到页面上,这个方法执行完,组件进入运行的状态

组件运行阶段

componentWillReceiveProps 组件将要接受新的属性父组件为子组件传递新的属性值

componentWillUpdate 组件将要被更新

render 根据最新的state和props重新渲染一颗内存中的虚拟dom

componentDidUpdate 页面又重新渲染 state和虚拟DOM和页面完全保持同步

组件销毁阶段

componentWillUnmount 组件将要被卸载

 

defaultProps

在组件创建之前,会先初始化默认的props,全局调用一次

调用constructor构造器中的this.state = {},初始化组件的状态

 

绑定this传参的三种方式

1.在事件中绑定this

onClick= {this.handlerMsg.bind(this, arg)}

2.在构造函数中绑定this传参

this.handlerMsg = this.handlerMsg.bind(this)

3.用箭头函数

onclcik={() => {this.handleMsg()}}

 

绑定文本框与state中的值

1.在vue中,默认可以通过v-model指定实现数据双向绑定

2.在react中只能把state之上的数据同步到控件上,但是不能默认实现把界面数据上的改变同步到state之上

3.绑定文本框与state中的值

value ={this.state,msg} onChange={this.handleTextChange}

//文本框内容改变时的处理函数

this.setState({

value: this.refs.txt.value

})

4.setState的问题

需要回调函数的形式获取最新的state

this.setState({}, function () {

console.log(this.state.msg);

})

React创建组件的方式

1.父组件向子组件传递数据 属性扩散 将组件封装到单独文件中

2.理解es6中class关键字的使用,基于class关键字创建组件

两者对比

1.用构造函数创建出来的组件 叫做无状态组件

2.用class关键字创建出来的组件,叫做有状态组件

本质区别就是 有无state属性