我应该在React / Redux中发送导航操作吗?

时间:2017-09-07 08:09:31

标签: reactjs react-redux

我正在使用React和Redux以及thunk。我想使用browserHistory.push,但不知道我应该在哪里调用此函数。比方说,我们有一个组件,它有一个简单的按钮。单击按钮时,我想调用browserHistory.push方法。我对redux的理解是,我应该发送一个动作({type: 'NAVIGATE'})并创建一个thunk,我将调用browswerHistory.push方法。该组件只会请求导航,而thunk实际上会处理请求。

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

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

1 个答案:

答案 0 :(得分:0)

您可以使用push中的react-router-redux方法将其绑定为动作创建者,就像任何其他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)