React中为什么要使用bind

案例

<!DOCTYPE >
<html>
	<head></head>
	<body>
		<div id="box"></div>
		<script type="text/javascript" src="../库/react.development.js"></script>
		<script type="text/javascript" src="../库/react-dom.development.js"></script>
		<script type="text/javascript" src="../库/babel.min.js"></script>
		<script type="text/babel">
			
			class Wather extends React.Component{
				constructor(props) {
				    super(props)
					this.state={isHot:true}
					this.chageWather=this.chageWather.bind(this)
				}
				render(){
					return <h2 onClick={this.chageWather}>今天的天气很{this.state.isHot?'炎热':'凉爽'}</h2>
				}
				chageWather(){
					this.setState({isHot:!this.state.isHot})
				}
			}
			ReactDOM.render(<Wather/>,document.getElementById('box'))
		</script>
	</body>
</html>

说明

上述案例中绑定了一个点击事件,用来改变isHot的状态,在构造器中通过bind方法重新定义了一个新的chageWather。为什么要写着一行代码?

实验

1、将biad方法注释掉,提示找不到undefind
在这里插入图片描述2、分析一下,render方法中的this是指向Wather实例,new Wather和调用这两步步是React帮我们做的。然后this.chageWather调用chageWather方法,里面的this是undefind,这是因为class中的开启了严格模式,严格模式的this指向undefind。当我们使用bind创建一个新的chageWather时,这个方法是挂在实例上的,且这个方法中的this也指向这个实例。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值