React无法读取undefined的属性

时间:2016-09-10 11:41:10

标签: reactjs binding

将一些代码从react.createclass移动到扩展Component i遇到了问题。在映射组件时,我将一个函数作为属性传递,因此可以从该组件访问它。它找到了以前的方式'但现在它抛出了这个错误: 未捕获的TypeError:无法读取属性' removeComment'未定义的

最初我认为它只需要绑定但是使用以下代码我仍然会收到错误:(注意:它仅在Comment组件中失败 - CommentForm中的类似代码按预期工作)

all(value, index) {
    return <Comment author={value.author} key={index} removeComment={this.removeComment.bind(this)} >{value.comment}</Comment>
  }
    render() {
      return(
        <div>
          {this.state.items.map(this.all)}
          <CommentForm getNewComment = {this.getNewComment.bind(this)} />
        </div>
      );
  }

我也尝试在构造函数方法

中绑定它

由于

1 个答案:

答案 0 :(得分:0)

all(value, index) {
    return <Comment author={value.author} key={index} removeComment={this.removeComment.bind(this)} >{value.comment}</Comment>
  }
    render() {
      return(
        <div>
          {this.state.items.map(this.all.bind(this))}
          <CommentForm getNewComment = {this.getNewComment.bind(this)} />
        </div>
      );
  }

当你运行地图时,你需要绑定处理程序,因为map在其他范围内运行处理程序,它将改变this的上下文。