React-router (0.13) + Flux - 如何将 flux class 实例放入 willTransitionTo hook?
React-router (0.13) + Flux - how to get flux class instance into willTransitionTo hook?
我有一个容器组件,用于所有需要授权访问的路由。但是我需要一个通用的生命周期钩子来询问 Flux store "is user logged in?"。问题是 static willTransitionHook
无法访问道具(或上下文):
class AuthenticatedHandler extends React.Component {
static willTransitionTo(transition) {
// `this.props.flux` is not accessible
}
componentDidMount() {
console.log('did mount', this.props);
}
render() {
const { flux } = this.props;
return (
<FluxComponent flux={flux} connectToStores={{
user: store => ({
isLoggedIn: store.isLoggedIn(),
user: store.getUser()
})
}}>
<RouteHandler />
</FluxComponent>
);
}
}
您提出什么解决方案?使用 componentDidMount
+ componentDidUpdate
?谢谢!
真的没有办法解决这个问题。如果你想收到 flux
作为道具,你不能依赖 willTransitionTo
。
但是,您可以使用 componentWillReceiveProps
,我相信它是由 React Router 调用的。
如果您想首先禁止转换,但是我不确定您应该如何进行。
我有一个容器组件,用于所有需要授权访问的路由。但是我需要一个通用的生命周期钩子来询问 Flux store "is user logged in?"。问题是 static willTransitionHook
无法访问道具(或上下文):
class AuthenticatedHandler extends React.Component {
static willTransitionTo(transition) {
// `this.props.flux` is not accessible
}
componentDidMount() {
console.log('did mount', this.props);
}
render() {
const { flux } = this.props;
return (
<FluxComponent flux={flux} connectToStores={{
user: store => ({
isLoggedIn: store.isLoggedIn(),
user: store.getUser()
})
}}>
<RouteHandler />
</FluxComponent>
);
}
}
您提出什么解决方案?使用 componentDidMount
+ componentDidUpdate
?谢谢!
真的没有办法解决这个问题。如果你想收到 flux
作为道具,你不能依赖 willTransitionTo
。
但是,您可以使用 componentWillReceiveProps
,我相信它是由 React Router 调用的。
如果您想首先禁止转换,但是我不确定您应该如何进行。