react-router-redux push()方法没有mapDispatchToProps

时间:2018-01-26 17:28:34

标签: reactjs react-router-v4 react-router-redux

我正在尝试使用react-router-redux的推送方法来导航我的路线。我已将onClick方法附加到我的链接。现在当我点击这个链接时,我应该去/ image。因此我把push方法放在onClick方法中。喜欢这个

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

toImagePage(){
       this.setState({activePanel:"image"},()=>{
           this.props.toImagePage()
       })
        push('/image')
    }

<div className="navbar-item" onClick={() => this.toImagePage()}>

Push不起作用但是。我没有导航到/ image routet。但后来我把push放在matchDispatchToProps中,然后就可以了

`

<div className="navbar-item" onClick={() => this.props.toTriviaPage()}`>

    const mapDispatchToProps = dispatch => bindActionCreators({
        toTriviaPage: () => {
            //this.setState({activePanel:"trivia"})
            push('/trivia')
        },
        toImagePage: () => {
            //this.setState({activePanel:"image"})
            push('/image')
        }
    }, dispatch)

如何让它在组件内的任何其他方法中工作?

1 个答案:

答案 0 :(得分:0)

push是一个动作生成器,因此它只创建一个可以调度的对象。因此,如果您想在组件中使用push,则必须将其映射到dispatch,有几种方法可以执行此操作:

  1. 只将状态选择器传递给connect,这会将调度道具放在组件上,您可以使用dispatch(push('/location'))
  2. 将push作为第二个参数传递给connectconnect(mapStateToProps,{push})这将使用dispatch自动换行推送,因此调用push实际上是(...args) => dispatch(push(...args))