【问题标题】:React cannot read property of undefinedReact 无法读取未定义的属性
【发布时间】:2016-09-10 19:46:49
【问题描述】:

将一些代码从 react.createclass 移动到扩展组件我遇到了问题。在映射组件时,我有一个函数作为属性传递,因此可以从该组件访问它。它找到了“以前的方式”,但现在它抛出了这个错误: 未捕获的类型错误:无法读取未定义的属性“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>
      );
  }

我也试过在构造方法中绑定它

谢谢

【问题讨论】:

    标签: reactjs binding


    【解决方案1】:
    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>
          );
      }
    

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

    【讨论】:

      猜你喜欢
      • 2021-10-15
      • 2019-04-09
      • 2020-10-10
      • 2019-02-15
      • 2020-07-23
      • 2019-07-22
      • 2018-12-05
      • 2016-03-03
      • 2020-08-01
      相关资源
      最近更新 更多