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

来源:3-3 代码优化

_phpstudy

2018-08-27 21:56

我看到老师会写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回答

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

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

    ```javascript

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

    ```

  • 龙年生
    2018-09-13 20:54:39

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

  • 龙年生
    2018-09-13 20:51:07

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

  • 幕布斯8261657
    2018-08-28 02:45:50

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

    _phpst...

    没有,并不会。我写代码测试之后提的问题。

    2018-08-28 20:14:47

    共 1 条回复 >

React16.4 快速上手

结合实例带你快速入门React16基础语法,并完成Todolist功能开发。

39680 学习 · 134 问题

查看课程

相似问题