reactjs - 为什么反应路由器不重新渲染组件?
问题描述
我有路由器
{
...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",
解决方案
不幸的是,react-router 旨在用于 SPA(单页应用程序),如果您想使用访问页面的路径,您必须使用服务器端渲染,我推荐 Next 框架,它在这里非常容易使用链接https://nextjs .org 你也可以在网上找到一些反应同构渲染的好教程。
推荐阅读
- r - 在 R 中运行 KMO(来自“psych”包)时出错
- javascript - 点击后如何切换移动菜单?
- python - 在 python 中使用唯一函数时保持排序
- c++ - 使用 snap 安装共享库
- r - 使用“conda”从 github 安装 R 包
- django - 使用 Facebook Grap Api 和 Webhooks 发送正确的凭据以通过 django 从 messenger 接收订阅消息
- algorithm - 如何生成所有具有 n 节点和 m 级深度的树?分支因子是可变的,在树本身内不必是恒定的
- c# - 如何使用 CMake 创建 Winforms Installer 应用程序
- python - 使用python在形状中查找形状
- scala - 对象内的值行为