1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
首先,在组件初始化的时候,通过this.state
给组件设定一个初始的state
,在第一次render
的时候就会用这个数据来渲染组件。
setState
state
不同于props
的一点是,state
是可以被改变的。不过,不可以直接通过this.state=
的方式来修改,而需要通过this.setState()
方法来修改state
。
比如,我们经常会通过异步操作来获取数据,我们需要在didMount
阶段来执行异步操作:
1 2 3 4 5 6 7 |
|
当数据获取完成后,通过this.setState
来修改数据状态。
当我们调用this.setState
方法时,React会更新组件的数据状态state
,并且重新调用render
方法,也就是会对组件进行重新渲染。
注意:通过this.state=
来初始化state
,使用this.setState
来修改state
,constructor
是唯一能够初始化的地方。
setState
接受一个对象或者函数作为第一个参数,只需要传入需要更新的部分即可,不需要传入整个对象,比如:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
在执行完setState
之后的state
应该是{name:'axuebin',age:18}
。
setState
还可以接受第二个参数,它是一个函数,会在setState
调用完成并且组件开始重新渲染时被调用,可以用来监听渲染是否完成:
1 2 3 |
|
总结
state
的主要作用是用于组件保存、控制以及修改自己的状态,它只能在constructor
中初始化,它算是组件的私有属性,不可通过外部访问和修改,只能通过组件内部的this.setState
来修改,修改state
属性会导致组件的重新渲染。
区别
props
是传递给组件的(类似于函数的形参),而state
是在组件内部被组件自己管理的(类似于在一个函数内声明的变量)state
是组件自己管理数据,控制自己的状态,可变;props
是外部传入的数据参数,不可变;没有
state
的叫做无状态组件,有state
的叫做有状态组件;多用
props
,少用state
。也就是多写无状态组件。
更多编程相关知识,请访问:编程教学!!
以上就是react中state和props的区别有哪些?的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
更多相关阅读请进入《React》频道 >>
Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者