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

关于把 bind 放在构造函数中的问题。

我看到老师会写bind方法修改当前this的指向。


但是如果这个函数直接使用箭头函数定义就不需要bind了呀

  handlerBtnClick = ()=>{
      this.setState({
            list:[...this.state.list,this.state.inputValue],
            inputValue:''
      })  
  }  
  
  handlerInputChange = (e)=>{
      this.setState({
            inputValue: e.target.value
      })  
 }  
 
 handlerLiClick = (k)=>{    
     let list = [...this.state.list];
     list.splice(k,1);    
     this.setState({list});  
 }


还有一个问题,不用bind如何传递参数:

 handlerLiClick={this.handlerLiClick.bind(null,k)}

这里放的是函数名,而不是函数调用,想知道如何放参数,如果不用bind的情况。

正在回答

4 回答

  1.  箭头函数这种写法属于实验性的写法,也就是说,日后更新后可能就不支持通过箭头函数改变this(具体可在官方文档 - 事件处理 那一章节查看)

2. 两种传递参数的方法:

```javascript

<button onClick={(e) => this.deleteRow(id, e)}>Delete Row</button>
<button onClick={this.deleteRow.bind(this, id)}>Delete Row</button>

```

0 回复 有任何疑惑可以回复我~

handlerLiClick={(k)=>this.handlerLiClick}

0 回复 有任何疑惑可以回复我~

handlerLiClick={(k)=>this.handlerLiClick.bind}

0 回复 有任何疑惑可以回复我~

改成箭头函数后,删除的task不是点击的task而是key=0的第一项。

0 回复 有任何疑惑可以回复我~
#1

_phpstudy 提问者

没有,并不会。我写代码测试之后提的问题。
2018-08-28 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于把 bind 放在构造函数中的问题。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信