gpt4 book ai didi

javascript - 无法使用react-router-redux访问context.router

转载 作者:行者123 更新时间:2023-12-02 14:49:02 28 4
gpt4 key购买 nike

我目前正在一个项目中使用react-router-redux,除了我不知道如何访问react-router路由器之外,一切都工作正常。

@connect((state, props) => {
return {
notification:state.getIn(['_display', 'notification']),
loadingScreen:state.getIn(['_display', 'loadingScreen']),
route:props.location.pathname
};
})
export default class Consultation extends React.Component {

constructor(props,context) {
super(props, context);
console.log(context.router);
}

componentDidMount(){
const { router } = this.context;
.....
}

render(){
....
}
}
Consultation.contextTypes = {
router: React.PropTypes.object.isRequired,
store:React.PropTypes.object
};

this.context.router 总是未定义,我尝试了很多方法但没有成功

我正在使用react 0.14.6,redux 3.0.2,react-router 2.0.0,react-router-redux 4.0.0

最佳答案

您将 .contextTypes 放在 connect() 返回的组件上,而不是您自己的组件上。这就是您的组件无法使用上下文的原因。

试试这个:

class Consultation extends React.Component {
constructor(props, context) {
super(props, context);
console.log(context.router);
}

componentDidMount(){
const { router } = this.context;
.....
}

render(){
....
}
}
Consultation.contextTypes = {
router: React.PropTypes.object.isRequired,
store:React.PropTypes.object
}

export default connect(...)(Consultation)

请注意,我们首先指定contextTypes,并导出连接的组件,而不是将contextTypes分配给您从中获取的已连接组件@connect 装饰器。顺便说一句,这是避免装饰器的另一个原因!

关于javascript - 无法使用react-router-redux访问context.router,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36350962/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com