我应该用什么代替路由器中的onEnter和onChange?

时间:2019-06-12 18:34:52

标签: reactjs meteor react-router

我正在遵循一个较旧的教程,但是我使用的是“ react-router”:“ ^ 5.0.0”我认为它现在不支持onEnter和OnChange。所以我应该在保持相同功能的同时使用什么。

export const globalOnChange = (prevState, nextState) => {
  globalOnEnter(nextState);
};

export const globalOnEnter = (nextState) => {
  const lastRoute = nextState.routes[nextState.routes.length - 1];
  Session.set('currentPagePrivacy', lastRoute.privacy);
  console.log('lastRoute',lastRoute);
};

export const routes = (
  <Router history = {browserHistory1}>
      <Route onEnter={globalOnEnter} onChange={globalOnChange}>
        <Switch>
          <Route exact path = "/" component={Login} privacy="unauth"/>
          <Route exact path = "/signup" component={Signup} privacy="unauth"/>
          <Route exact path = "/dashboard" component={Dashboard} privacy="auth"/>
          <Route exact path = "/test" component={Test} privacy="auth" onEnter={onEntertESTPage}/>
          <Route component={NotFound}/>
        </Switch>
      </Route>
  </Router>
);

1 个答案:

答案 0 :(得分:1)

onEnterreact-router-4上不再存在。在v4中,您应该使用呈现的组件的生命周期方法。您可以使用onEnter代替componentDidMount

https://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/guides/migrating.md#on-properties

所以我也建议您在组件本身而不是路由器中设置/检查隐私规则。