如何让react-router和react-redux很好地发挥作用?

时间:2016-08-22 20:21:30

标签: reactjs redux react-router react-redux

前言我对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文件,但如果我必须开始传递商店(使用提供商的整个点........)它会变得混乱。

0 个答案:

没有答案