Javascript 使用嵌套的react组件更新主干模型部队

Javascript 使用嵌套的react组件更新主干模型部队,javascript,backbone.js,reactjs,Javascript,Backbone.js,Reactjs,我一直在使用主干来管理我的模型,并对模型更改的视图作出反应 为此,我在这里使用了公认的答案:其中提供的mixin侦听模型/集合上的更新,并简单地调用组件上的forceUpdate 这对于使用mixin的第一个根组件非常有效。但是,对于内部仅依赖于模型属性的嵌套组件,这些组件将永远不会得到更新,因为react会丢失旧/新状态,如Pete Hunt(core react developer)所述: 我认为有两种解决办法: 对于以下所有子组件,在根组件之后使用模型或集合的json版本。(将model=

我一直在使用主干来管理我的模型,并对模型更改的视图作出反应

为此,我在这里使用了公认的答案:其中提供的mixin侦听模型/集合上的更新,并简单地调用组件上的forceUpdate

这对于使用mixin的第一个根组件非常有效。但是,对于内部仅依赖于模型属性的嵌套组件,这些组件将永远不会得到更新,因为react会丢失旧/新状态,如Pete Hunt(core react developer)所述:

我认为有两种解决办法:

  • 对于以下所有子组件,在根组件之后使用模型或集合的json版本。(将model={this.props.model.attributes}传递给子级)
  • 也可以通过全局模型/集合将mixin用于子组件
  • 选项1似乎限制了主干网的能力,因为现在只有属性流经链,模型上的其他方法丢失。 在开发mixin时,选项2通常看起来像一个反模式。此外,您还需要跟踪全局绑定,并更新子项的绑定


    我是否遗漏了什么,或者这个问题是否有更简单的解决方案?

    您可以在没有全局变量的子组件中使用mixin;只需通过属性传递模型本身。选项1更好,失去混合。向孩子们隐藏主干网的功能可以使您的组件保持简单,并且您不会被主干网将来的工作方式所束缚。我会考虑将模型保留在所有组件之外,只传递原始数据。然后,在更改事件中,在根组件上设置props以触发更新。@BrandonTilley在这种情况下,我仍然必须自己跟踪模型的更改时间,因为它的更新不在React组件上,并且在每个willReceiveProps上为孩子们重做绑定。@Shawn我知道这是一个更干净的解决方案,但是这个阶段的组件是大量嵌套的,并且依赖于各种模型/集合属性和方法,我担心清理这些组件将是一项相当艰巨的任务。