React-Router在路由上重新安装组件



我有一个连接的(与Redux Store(组件。我有多个路线,所有路线都在渲染道具中使用此组件。在每个路线上,整个组件似乎都已重新安装。有什么方法可以防止这种情况发生?我的第一个想法是,由于渲染支柱是反应路由器调用的函数,我可能每次都会重新实现该组件?这是一些代码:

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方法。

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

编辑:

这是我的不好。由于所有路线都有不同的键,因此React将重新安装它们,因为它们都不同。请参阅此处:https://github.com/reaecttraining/react-router/issues/5972

最新更新