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

What should I use in place of onEnter and onChange in 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>
);

onEnterreact-router-4 上不再存在。对于 v4,您应该使用由 .您可以使用 componentDidMount.

而不是 onEnter

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

所以我也建议 setting/checking 组件本身而不是路由器中的隐私规则。