javascript - Facebook react : Invariant Violation and elements than didn't mount automatically

标签 javascript reactjs

我正在通过做一个小例子来学习 Facebook React。 我决定检查我对 this 绑定(bind)的了解是否正确,所以我创建了三个 React.class,其中可变状态在父级中,中间只将回调传递给 children 来操纵它。

基本结构:

- MainFrame (states here)
  - FriendBox (only pass the callbacks for change states to Friend)
    -Friend

请注意,我可以使用 transferThisProp 但实际上我更喜欢“手动”制作它。

FriendBox 渲染包含这个:

var allFriends = this.props.friends.map((function (f) {
  return(
    <Friend key = {f.id}
            name = {f.name}
            select = {this.props.select}
    />
  )
}).bind(this))  

friend 渲染包含这个:

return(
  <div className="friend">
    {this.props.name}
    <a href="" onClick={this.props.select(this.props.key)}>
      select
    </a>
  </div>
)

运行我的代码时,我收到以下消息:

MainFrame.sendToFriendH:
  Invariant Violation: receiveComponent(...):
  Can only update a mounted component. react.js:7276
Uncaught Error: Invariant Violation:
  receiveComponent(...): Can only update a mounted component. 

有趣的是,当使用 chrome 的 react 扩展时,我可以检查虚拟 DOM 是否正常并且绑定(bind)是否正常。除了第一个 Friend 元素的 Child 组件说 _lifeCycleState: "UNMOUNTED"

之外,一切看起来都很好

这让我觉得我犯了一个错误,底部的 child 没有被渲染和安装。 所有代码都失败了,但我不知道确切原因。 谁能告诉我为什么该元素没有自动挂载,我该如何解决?

完整代码:http://jsfiddle.net/RvjeQ/

最佳答案

当你写作时

onClick={this.props.select(this.props.key)}

您正在立即调用 this.props.select 处理程序并将其result 设置为 onClick 处理程序。我猜您想改用部分应用程序,您可以使用箭头函数来完成:

onClick={(e) => this.props.select.bind(this.props.key, e)}

如果你不关心事件参数,你可以跳过它。

您也可以像这样使用 .bind():

onClick={this.props.select.bind(null, this.props.key)}

关于javascript - Facebook react : Invariant Violation and elements than didn't mount automatically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21554584/

相关文章:

javascript - 第一次滑动后禁用滑动,完成后重置?

javascript - 为什么 jquery 循环不起作用

javascript - 使用 JQuery Find 方法在 HTML 表中查找复选框

javascript - React - 列表中的每个 child 都应该有一个唯一的 "key" Prop

javascript - 检查两个整数是否具有相同的符号

javascript - 多个动态 Canvas 元素?

javascript - 如何在 React 中循环一个对象?

javascript - 如何在 react 中显示图像数组中的图像

javascript - 无法使用选择器从Redux存储中获取值

javascript - 如何使用指向 Webpacked JS 文件新版本的 ASP.NET 来管理版本?