Reactjs 为什么在卸载之前调用组件呈现方法?

Reactjs 为什么在卸载之前调用组件呈现方法?,reactjs,react-router,Reactjs,React Router,我有两条路线渲染相同的组件 一旦我在路由路径“/route1”上,我单击一个链接,该链接将我路由到/route2。我希望调用componentWillUnmount(),但会使用prop类型“type2”再次调用render方法。为什么会这样 我已经尝试为每个路由添加一个密钥,但它不起作用 `<Switch> <Route path={'/route1'} render={props => (

我有两条路线渲染相同的组件

一旦我在路由路径“/route1”上,我单击一个链接,该链接将我路由到/route2。我希望调用componentWillUnmount(),但会使用prop类型“type2”再次调用render方法。为什么会这样

我已经尝试为每个路由添加一个密钥,但它不起作用

`<Switch>
         <Route
          path={'/route1'}
          render={props => (
            <Component1
              type={type1}
              {...props}
            />
        )}
      />
      <Route
        path={'/route2'}
        render={props => (
          <Component1
            type={type2}
           {...props}
          />
        )}
      />
    </Switch>`
`
(
)}
/>
(
)}
/>
`

为什么两条路线指向同一事物?React的虚拟dom diffing是智能的,因此它没有理由浪费时间卸载组件,然后安装完全相同的组件,它只需要更新已经存在的组件。实际上,您可以通过提供不同的
道具来强制重新创建组件。但从长远来看,重构组件使其尊重
componentdiddupdate
看起来更有希望。可能是@skyboyer的副本我在哪里添加密钥?我之所以对不同的路线使用相同的组件,是因为我有一个具有不同类别的导航菜单。因此,如果单击category1,我会将路由更改为/category1,在componentdidmount()中进行API调用,并将其存储在redux存储中。现在,如果用户单击category2,我想进行API调用以获取category2数据并将其存储在redux存储中。但是,在这里,在调用componentWillUnmount()之前,使用category1 api调用的数据调用render方法。当路由更改时,甚至不会调用componentDidUpdate()。它总是先转到render()方法