前面我们已经介绍了React中组件的相关知识,这里就以类式组件为例,讲解组件中的三大属性。
概念:state是组件对象最重要的属性,值是对象(可以包含多个key:value的组合),组件被称为`状态机`,通过更新组件的state来更新对应的页面显示(重新渲染组件),有state称为复杂组件。
State 的使用对象形式(key,value);
例如:
state ={ a: 10 }
'javascript:;' onClick={demo} >已关注
说明:
- ·onclick 变为 onClick。
- ·{函数名}返回值给click,加()就会直接调用。
必须要使用 setState 方法修改state中的值
- demo( ){
-
- this.setState({isflag:!this.state.isflag})
-
- }
-
- }
-
- ReactDOM.render(<MyClass/>,document.getElementById('hello'));
说明:
- ·bind会生成一个新的方法 并传对象 改变this的指向
- ·必须使用setState 修改才有效,修改内容为合并。有值得修改没有的不动
打铁需趁热,下面通过一个小案例和大家讲述state的具体用法以及上述小知识点的应用吧!
- html>
- <html lang="en">
-
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>setState的用法title>
- <style>
- button{
- width: 80px;
- height: 40px;
- border-radius: 10px;
- border: none;
- border: 1px solid #333;
- font-size: 16px;
- }
- span{
- color: red;
- font-size: 24px;
- font-style:italic;
- margin-left: 10px;
- }
- .yes{
- background: red;
- }
- .no{
- background: green;
- }
- style>
- head>
-
- <body>
- <div id="root">div>
-
- <script src="../JS/react.development.js">script>
- <script src="../JS//react-dom.development.js">script>
- <script src="../JS/babel.min.js">script>
-
- <script type="text/babel">
- // 利用类式组件
- class Person extends React.Component {
- // 类式组件中用来存储数据的地方,类似vue中的data,
- // 因为数据可以多种,所以采用对象的形式,
- // 又因为是在一个类中,所以很多书写习惯类似在定义类
- state ={
- flag: true,
- count: 1
- }
- // 因为是类,所以还是按照类中函数的书写形式,但要注意写成箭头函数形式
- clickNumber = ( )=>{
- // 要改变state中的数据,需要使用setState方法
- // 但也有可能改变的数据较多,所以可以采用对象的形式,
- // 这里的修改是合并修改,即有该属性就改变该属性的值,若没有则不改变
- this.setState({flag: !this.state.flag,
- count: ++this.state.count})
- }
- render() {
- return (
- <div>
- <button className={this.state.flag?'yes':'no'} onClick={this.clickNumber}>{this.state.flag ? '已点击':'未点击'}button>
- <p>点击次数为:<span>{this.state.count}span>p>
- div>
- )
- }
- }
- // 转为真实dom到页面
- ReactDOM.render(<Person />, document.getElementById('root'));
- script>
-
- body>
-
- html>
- 每个组件对象都会有props(properties的简写)属性。
- 组件标签的所有属性都保存在props中。
- props 是不可变的,只能通过 props 来传递数据。
具体使用方式如下:
- let p1 = {name:'张三',age:29};
-
- ReactDOM.render(<Person {...p1}/>,document.getElementById('hello'));
定义:组件内的标签可以定义ref来标识自己。
-
-
-
以上就是今日的分享,有vue基础的同学在学react会发现有很多相同之处但react和vue的语法习惯还说不尽相同,所以对于和我一样的初学者还说要多写多练多思考,千万不要眼高手低哦!
最后依旧诚挚祝福屏幕前的你健康快乐,平安幸福!