属性更多是用于组件之间的通信,比如在上个博客里,父组件App.js想要传递一些数据给子组件Person.js的时候就会使用到属性,而且我们不会对属性进行改变,而state不一样,它不是用来传值的,而是改变这个值的状态。
state的使用:
state只能在类当中使用,不能在函数当中使用
想要修改这2个值,就要使用state,想要修改内容,就不能像上述一样写死在字符串里面了,而是通过触发一个事件取修改某一个内容,这个时候就会使用到state,state是来自于react里面的component,它给我们提供了state这样一个状态,而state像render一样,只能在类里面应用(不能在Person里面使用),而且这个类还要继承component,然而render()是一个方法,state是一个状态
给state一个对象,里面可以设置很多的属性:1,2,3处的命名可以随便起
定义state之后就可以使用它了:在render()内部即JSX里面去使用它
将name还有count的值作为状态(可以修改)
this指的是当前类App
接下来通过事件触发让当前的状态(name和count)的值发生改变
按钮标签肯定是放在JSX里面进行渲染,定义触发事件的方法和rende相同的结构(同级)
触发事件的写法,如果红线里面的触发函数加括号的话,这个函数就会自动运行,而不是通过触发才运行,所以如果不传参的话是不用加括号的。
更改当前状态的方法是:setState更改状态(专门更改状态的方法)
如果只想更改persons的话(将persons直接写在函数里面):
this指的是类App(es6采用的是就近原则,如果没有类的话指向),没有任何指向的话就指向window,之所以this.setState是因为setState这个方法在类component里面,而App这个类又继承了component这个类,所以能够this.setState,this指向App这个类。
state和props的区别:
总结为:state定义一些属性,然后可以在JSX当中去使用,使用完之后如果想要Person.js能够接收到的话就需要使用属性传值的形式(将当前的state值传递到另外一个组件里面去),属性一般不会被更改,更改的话就要使用state,通过setState()方法实现更改。state和setstate都来自于component。
React-state状态的使用
最新推荐文章于 2021-11-18 07:30:32 发布