react闭包和自己的属性不能改变view,需要使用state props和context

组件自己身上的属性值变化,不会引起视图改变
我们可以在组件的类定义里面写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;

闭包中的值变化,也不会引起视图的改变!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值