前言我对react-router-redux没兴趣,我根本不想将位置作为状态树的一部分。
原始设置如下:
let routes = (
<Router history={hashHistory}>
<Route path='/' component={App}>
<IndexRoute component={HomePage} onEnter={_ensureLoggedIn}/>
<Route path="login" component={ SessionForm }/>
</Route>
</Router>
)
let provider = (
<Provider store={store}>
{routes}
</Provider>
);
function _ensureLoggedIn(nextState, replace, callback) {
let hasBeenFetched = store.getState().currentUser.hasBeenFetched;
let loggedIn = !!store.getState().currentUser.id;
if (hasBeenFetched) {
_redirectIfNotLoggedIn();
} else {
store.dispatch(Actions.fetchCurrentUser());
}
function _redirectIfNotLoggedIn() {
if (!loggedIn) {
replace({}, "/login");
}
callback();
}
}
ReactDOM.render(provider, root);
通过此尝试,没有组件可以访问商店(使用提供程序的整个点......?)
好的很酷,所以一些挖掘表明你的路线必须在提供者内部生成,否则它不起作用。
我将Provider中的{routes}替换为实际的路由列表。
仍然不起作用......这里最重要的方面是,如果用户没有登录,则禁用对大多数路线的访问。当在索引中完成所有工作时,很容易确保这一点。 js文件,但如果我必须开始传递商店(使用提供商的整个点........)它会变得混乱。