无法使用 react-router-redux 访问 context.router
Can't access context.router with react-router-redux
我目前在一个项目上使用 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
装饰师。顺便说一句,这是避免装饰器的另一个原因!
我目前在一个项目上使用 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
装饰师。顺便说一句,这是避免装饰器的另一个原因!