我正在尝试根据路线上的参数加载不同的第三方数据。路线不会改变,只是发送给它的参数。
我需要停止正在提取数据的订阅,清除数据,然后发送新的api请求来填充订阅。
我正在使用带有FlowRouter的react-meteor(它效果很好!)
- view.jsx -
View = ReactMeteor.createClass({
getMeteorState: function(){
return {
feed: Feed.find().fetch()
}
},
render: function(){
return (
{this.state.feed.map(function(post, i){
return <ViewPost data={post} key={i} />
})}
)
}
})
- menu-list-item.jsx -
MenuListItem = ReactMeteor.createClass({
stopFeedSubscription: function(){
FlowRouter.stop('feedSub')
Feed.remove({})
},
render: function(){
var route = "//view/"+this.props.data._id
return (
<li key={this.props.data._id} className="collection-item" data-post={this.props.data.name}>
<a href="#" data-route={route} className="btn-post-list" onClick={this.stopFeedSubscription}>{this.props.data.name}</a>
</li>
)
}
})
当点击菜单项时,我想停止任何传入数据到该订阅并从中删除所有内容。当重新呈现/ view /:id时,会发生对第三方api的新调用,并且它会抓取新数据。
所有这些都有效,除非单击菜单项时数据仍然存在,它将显示在新路径中,该路径应显示不同的数据。
答案 0 :(得分:3)
Flow Router没有办法停止订阅。我们可能也没有。如果您需要类似的东西,请尝试在React Components中管理订阅。
我们可以使用SubsManager。无论如何,不确定这是你需要的。
也可以在路由器级别执行此操作。
尝试通过获取参数来定义路由器中的订阅。因此,当您需要停止它时,将您的应用程序移动到不同的路线。然后,您之前的订阅会自动停止。
默认情况下,只有当前路由上定义的订阅处于活动状态。更改路线时,以前的路线将被取消激活。