【问题标题】:Should I dispatch an action for navigation in React/Redux我应该在 React/Redux 中调度一个导航操作吗
【发布时间】:2017-09-07 08:09:31
【问题描述】:

我将 React 与 Redux 和 thunk 一起使用。我想使用browserHistory.push,但不确定我应该在哪里调用这个函数。假设我们有一个组件,它有一个简单的按钮。单击按钮时,我想调用browserHistory.push 方法。我对 redux 的理解是,我应该调度一个动作 ({type: 'NAVIGATE'}) 并创建一个 thunk,我将在其中调用 browswerHistory.push 方法。组件只会请求导航,而 thunk 会实际处理请求。

但是,我听到了不同的意见,比如 Redux 中的操作应该只在更新商店时使用。如果您不修改商店,则无需调度操作。

这个问题的最佳解决方案是什么?

【问题讨论】:

标签: reactjs react-redux


【解决方案1】:

您可以使用react-router-redux 中的push 方法并将其绑定为动作创建者,就像任何其他redux 动作一样。

import React from 'react'
import { connect } from 'react-redux'
import { push } from 'react-router-redux'

function YourComponent({ redirectTo }) {
  return (
    <div>
      ...
      <button onClick={() => redirectTo('/nextRoute')}>
        Click-me
      </button>
    </div>
  )
}

export default connect(
  undefined,
  { redirectTo: push }
)(YourComponent)

【讨论】:

  • 能否添加中间件注册码?
  • 感谢您的回答,它对我有所帮助,但并没有真正回答问题。这是否意味着,我应该为此创建一个 redux 操作(分别使用react-router-redux 的一种形式)?
  • 您不需要 redux 操作。 push 方法已经是动作了。
  • 是的,我明白了。我可以使用push 方法。这就是我要问的。我应该使用push 之类的东西还是应该直接从组件中调用browserHistory.push
  • 我会直接致电push。在这种情况下,您不需要browserHistory.push
猜你喜欢
  • 2017-11-09
  • 1970-01-01
  • 2016-08-11
  • 2021-02-23
  • 2020-07-18
  • 2020-08-01
  • 2017-10-21
  • 2021-04-12
  • 1970-01-01
相关资源
最近更新 更多