首页 文章

React-Router在路由更改时重新安装组件

提问于
浏览
3

我有一个连接(到redux商店)组件 . 我有多个路由都在渲染道具中使用此组件 . 在每次更改路径时,整个组件似乎都会重新安装 . 有没有办法防止这种情况发生?我的第一个想法是,我可能每次都重新实例化组件,因为渲染道具是一个反应路由器调用的函数?这是一些代码:

const routeFunction =
  (resource, props) => <CrudWrapper resource={resource} modelId={props.match.params.id} />

export default crudResources.map(resource => ({
  path: `/${resource}/:id?`,
  link: `/${resource}`,
  resource,
  // eslint-disable-next-line react/prop-types
  render: routeFunction.bind(null, resource)
}));

然后在JSX中映射路由: {routes.map(route => <Route key={route.path} {...route} />)}

我将路径包裹在 <Switch> 中,并认为这可能导致问题,但即使在删除开关后,每次调用组件的 componentWillMount 方法 .

1 回答

  • 0

    问题似乎与路线上的关键支柱有关 . 当我省略关键道具时,组件不会重新安装 . 一旦我添加它,无论字符串是什么,路由都会被重新安装 .

    EDIT:

    这是我的坏事 . 由于所有路线都有不同的钥匙,因此反应将重新安排它们,因为它们都是不同的 . 看这里:https://github.com/ReactTraining/react-router/issues/5972

相关问题