reactjs - 在路由参数更改时重新渲染相同的组件(react-router-dom)
问题描述
我有这样的代码:
<BrowserRouter basname="/page">
<Switch>
<Route path="/test/:id">
<Page />
</Route>
</Switch>
</BrowserRouter>
当我切换/page/test/1
到组件时/page/test/2
,Page
不会重新渲染。我知道componentDidMount
不会调用该方法,但我希望Page
重新渲染组件。
我怎样才能做到这一点?
解决方案
如果您使用的是 React v16.8 或更高版本,请尝试这样
import React, { useEffect } from "react";
const Page = (props) => {
useEffect(() => {
//Your code comes here to fetch the data from API
}, [props.match.params.id]);
return (<div>Layout</div>);
}
export default Page;
对于类组件
<Route path="/page/:pageid" render={(props) => (
<Page key={props.match.params.pageid} {...props} />)
} />
推荐阅读
- django - 如何在 FormView 中使用 Httprequest 对象?
- python - 如何使用 Keras TimeseriesGenerator
- python - 使用 Office365 Python 模块使用 Python 访问 Sharepoint 上的 Excel 文件
- loops - go vet - 我由 func 字面量捕获的循环变量
- javascript - 如何将 GoogleChromeLabs input-first-delay polyfill 添加到 React 应用程序
- apache-kafka - 使用 AWS MSK 的 Kakfa Minions
- javascript - ajax 中的 Select append() 有问题
- python - dict 通过烧瓶 url 作为字符串返回
- reactjs - 在 ReactJs 中单击按钮时加载新组件?
- sed - 从括号内的字符串中提取子字符串,其中子字符串可能有空格