在非React文件

时间:2015-10-20 14:12:50

标签: javascript backbone.js reactjs

我有一个骨干文件,在里面,我使用React.renderComponent渲染一个React组件(Timer)。但是,在react组件中,我有一个状态调用计数器。我想从骨干文件中获取该组件的状态。虽然我将props.model传递给Timer,但我可以在Timer中修改这个道具,但这会使props.model中的数据保持不变,这是我不想做的。

由于Timer不是React组件的子代,因此我无法使用refs来访问Timer.stat。那么有没有办法在其父级中获得Timer的状态?

非常感谢!

1 个答案:

答案 0 :(得分:1)

无法通过组件外部的读取或拉取查询访问状态。国家对组件本身及其子女是私有的。

如果您需要访问变量,您有几个选择:

  • 让反应组件在每次状态更改时发送一些更改事件,以通知其他人新状态
  • 在反应组件外部跟踪它,并将其作为道具传递给组件本身。
  • (脏解决方案:不要在家中尝试这个):让react组件将特定的状态变量放在要呈现的HTML代码的数据属性中,例如: <div data-foo={this.state.foo}>然后从DOM中读取该属性。在大多数情况下,如果状态发生变化,则反应始终会重新呈现,因此您的属性始终与状态同步。

如果其他所有方法都失败,那么真的只使用最后一个选项作为转义。因为它违背了反应的设计原则。