React / Flux:在路线变化期间存储重要参数

时间:2015-11-17 04:32:29

标签: routing reactjs url-routing react-router reactjs-flux

工具:React 0.14.0,React-Router 1.0.0,Vanilla Flux

因为"后退按钮"事件处理 - 我尝试使用路由来保留重要的ID以进行渲染(例如currentThreadID)。

e.g。 - /threads/:currentThreadID

问题:因为多个组件依赖于currentThreadID,我试图抓住params并在路径打开时将它们添加到商店。问题是,我无法在程序中找到我应该抓住当前位置的位置。

例如我有这条路线

<Route path='/' component={Main}>
  <Route path='home' component={Home} >
    <Route path='threads' component={Thread} >
      <Route path=':currentThreadID' component={ThreadList} />  
    </Route>
  </Route>
  <Route path='login' component={Login} />
</Route>

当我输入ThreadList时,我试图获取参数并将其添加到。{ 存储,以便其他组件可以访问它。

ThreadList.js

componentWillMount: function(){
    var { threadID } = this.props.params
    ThreadActionCreators.setCurrentThread(threadID);
},

尝试设置当前ID导致与Dispatcher冲突 &#34;错误:不变违规:Dispatch.dispatch(...):无法在发送过程中发送。&#34;

我认为这是因为与React-Router的冲突(我所有其他调度都已完成。)

问题:   我是否正在尝试支付&#34; currentThreadID&#34;状态正确吗?如果是这样,我在哪里调用该行动将该参数存储在我的商店中?

1 个答案:

答案 0 :(得分:0)

我暂时没有使用react路由器,但我认为你可以在提供给Router.run的回调中设置一个动作调度来调度路由更改动作。然后,您可以设置商店以从路线参数中获取相应路线更改的ID。

我建议看一下Redux,它是对Flux架构的一种改进,而redux-router也为这类东西内置了动作。