【问题标题】:React/Flux: Storing Important Params During Route ChangesReact/Flux:在路由更改期间存储重要参数
【发布时间】:2016-02-18 08:49:59
【问题描述】:

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

由于“后退按钮”事件处理 - 我正在尝试使用路由来保留重要的 id 以进行渲染(例如 currentThreadID)。

例如- /threads/:currentThreadID

问题:由于多个组件依赖于 currentThreadID,我试图在打开路由时获取参数并将它们添加到存储中。问题是我在程序中找不到应该获取当前位置的位置。

例如我有这条路线

<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 时,我试图获取参数并将其添加到 store 以便其他组件可以访问它。

ThreadList.js

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

尝试设置当前 ID 会导致与 Dispatcher 发生冲突 “错误:不变量违规:Dispatch.dispatch(...): 无法在调度过程中调度。”

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

问题: 我是否试图正确分配“currentThreadID”状态?如果是这样,我应该在哪里调用将参数存储在我的商店中的操作?

【问题讨论】:

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


    【解决方案1】:

    我已经有一段时间没有使用 react router 了,但是我认为您可以在提供给 Router.run 的回调中设置一个动作调度来调度一个路由更改动作。然后,您可以设置您的商店以在适当的路线更改时从路线参数中获取 ID。

    不过,我建议您看看 Redux,它是对 Flux 架构的改进,redux-router 内置了针对此类事情的操作。

    【讨论】:

    • 这是一个开始......但我找不到一个很好的例子(过去一年发生了很多变化,这使得它更加难以分辨)
    猜你喜欢
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 2016-02-10
    • 2017-01-04
    • 2018-06-09
    • 2018-06-16
    相关资源
    最近更新 更多