首页 > 解决方案 > 为什么反应路由器不重新渲染组件?

问题描述

我有路由器

  {
    ...PageItem,
    path: '/page/item/:id',
  },
  {
    ...Page,
    path: '/page',
  },

我有第一个组件,其中包含来自道具的数据。当我想转到当前项目时,我使用它并将我重定向到第二个组件并且一切正常:

 <Link to={{pathname: "/page/item/" + page.id}}>go to item</Link>

但是如果我按下浏览器上一页按钮或使用第二个组件

 <Link to={{pathname: "/page"}}>go to list</Link>

都不起作用。我的第一个组件没有重新渲染(我在 componentdidmount 的第一个组件中获得道具并且它没有调用)。第一个组件尝试使用来自第二个组件的道具渲染页面并给我错误。

为什么我的道具没有改变以及如何解决这个问题?

ps我使用:

"react-router-config": "1.0.0-beta.4",
"react-router-dom": "4.2.2",

标签: reactjsreact-routerreact-router-dom

解决方案


不幸的是,react-router 旨在用于 SPA(单页应用程序),如果您想使用访问页面的路径,您必须使用服务器端渲染,我推荐 Next 框架,它在这里非常容易使用链接https://nextjs .org 你也可以在网上找到一些反应同构渲染的好教程。


推荐阅读