为了账号安全,请及时绑定邮箱和手机立即绑定

React子组件想要改变父组件的state,子组件中的两种写法为什么都能生效?

React子组件想要改变父组件的state,子组件中的两种写法为什么都能生效?

吃鸡游戏 2018-10-19 14:11:48
使用react时,我想要让子组件去触发更新父组件的state,我将setState方法写在了父组件中,然后通过props向子组件中传递了这个方法,然后在子组件中通过绑定onClick事件触发this.props中传递进来的方法。在函数内部,我发现给this.props传进来的方法使用call(this)时与不使用call,结果居然一样。不是很明白为什么,通过绑定call之后,作用域应该已经改变了,并且是this指向子组件,但实际上指向的还是父组件。百思不得其解,求大神指教!!!!!代码:这是绑定了call方法的不绑定call的,就是将子组件中的showMsg方法的call方法去掉changeMsgChild() {    console.log("-- changeMsgChild_this --", this);    this.props.showMsg(this);}最后其结果是一样的,都可以正常执行,而且都能改变父组件的state
查看完整描述

1 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

bind方法只有第一次bind时是有用的,得到的函数作用域已经确定,对这个函数无论再使用call,apply,bind都无法再改变其this值


查看完整回答
反对 回复 2018-11-22
  • 1 回答
  • 0 关注
  • 501 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信