组件自己身上的属性值变化,不会引起视图改变
我们可以在组件的类定义里面写constructor构造器,里面定义this.a = 100 。表示给组件的实例绑定一个a属性,值是100。在jsx中使用的时候,直接this.a即可。
import React from "react";
class App extends React.Component{
//构造函数
constructor(){
super(); //要求调用super
this.a = 100;
}
//组件中最重要的方法就是render方法,render是渲染的意思
render(){
//返回一个jsx语法,非常牛逼语法
return (
<div>
{this.a}
</div>
);
}
}
//向外暴露
export default App;
我们增加一个按钮,试着让用户点击按钮之后,a的值变化:
import React from "react";
class App extends React.Component{
//构造函数
constructor(){
super();
this.a = 100;
}
add(){
this.a++;
console.log(this.a);
}
render(){
return (
<div>
<p>{this.a}</p>
<p>
<input type="button" value="按我" onClick={(this.add).bind(this)} />
</p>
</div>
);
}
}
//向外暴露
export default App;
通过案例学习了:
① 绑定监听使用onClick、onMousedown、onMouseenter、onBlur,把on后面的字母大写,React会自动识别React事件。
② 绑定监听函数的时候,this上下文是有问题的,所以需要使用bind()方法来设置上下文
③ 绑定监听函数的时候,注意用{}而不是""
所以React中,组件自己的属性的变化不会引发视图的变化!!
4.2 闭包中的值变化,不会引起视图改变
import React from "react";
class App extends React.Component{
render(){
let b = 99;
return (
<div>
<p>{b}</p>
<p>
<input type="button" value="按我" onClick={()=>{b++;console.log(b);}} />
</p>
</div>
);
}
}
//向外暴露
export default App;
闭包中的值变化,也不会引起视图的改变!