React-router(0.13)+ Flux - 如何将flux类实例导入willTransitionTo钩子?

时间:2015-07-02 21:20:44

标签: javascript reactjs reactjs-flux flux react-router

我有一个容器组件,用于需要授权访问的所有路由。但我需要一个通用的生命周期钩子来询问Flux商店"用户是否已登录?"。问题是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?谢谢!

1 个答案:

答案 0 :(得分:1)

真的没办法解决这个问题。如果您希望获得flux作为道具,则不能依赖willTransitionTo

但是,您可以使用componentWillReceiveProps,我认为,这是由React路由器调用的。

如果您想首先禁止过渡,我不确定您应该如何继续。