我有一个子组件依赖于另一个小部件来设置它应该订阅的数据。如此有效的动态订阅。
getMeteorData() {
var topicName = this.context.topicName;
var handle = Meteor.subscribe('RebotTopicDetail', {name: topicName});
...
如果topicName更改,我想重新订阅新数据。
这样做的最佳方式是什么?
topicName
由另一个组件设置,我使用上下文在对象之间传递它。
https://facebook.github.io/react/docs/context.html
我可以看到context.topicName
正在改变,因为我正在显示它。
但它并没有触发流星数据中的反应计算重新运行。
有没有办法在getMeteorData中的变量上声明Deps? 我的理解是,这是一个反应块,因此更改将导致getMeteorData块重新运行。
https://react-in-meteor.readthedocs.org/en/latest/meteor-data/
我也尝试在topicName
中传递props
,但这也不会触发反应更新。
其他人来到这里,相关主题
答案 0 :(得分:0)
编辑:道具似乎是被动的
```
getMeteorData() {
var topicName = this.props.topicName;
var handle = Meteor.subscribe('RebotTopicDetail', {name: topicName});
/// and in the container passing in a prop
<TriggerList topicName={this.state.topicName} />
```
的工作原理。不确定使用容器项目的状态是否与它有关。