reactjs - 使用标头中使用的状态并基于带有钩子的 Route 更新其内容
问题描述
我正在尝试根据路由中的文本更新标题。但似乎无法让标题更新。我正在使用useState()
钩子。我也使用useEffect()
了钩子,但标题似乎没有更新。所以标题应该说“新标题”而不是“默认标题”。我正在为我的路由器使用“react-router-dom”。
app.js
是 :
function App() {
const [header, setHeader] = useState('default header')
return (
<div className="App">
<BrowserRouter>
<Navigation />
<Header heading={header} />
<main>
<Route exact path='/case-study' render={routeProps => (
<Child {...routeProps} setHeader={() => setHeader} />
)} />
</main>
<Footer />
</BrowserRouter>
</div>
);
}
我的孩子路线是:
const CaseStudy = (props) => {
useEffect(() => {
props.setHeader('new header')
})
return(
<h1>test</h1>
)
}
解决方案
试试这个:
<Child {...routeProps} setHeader={setHeader} />
推荐阅读
- php - 如何颤动/飞镖将图像数据发送到 apache 服务器 php 文件
- sql - SQL group-n-result (count, max, group)
- import - 在 SAS 中导入 txt 文件
- angular - Angular 9 - 类型“void”上不存在属性“订阅”
- javascript - 谷歌地图:通过地理编码器将地址转换为坐标后获取方向
- javascript - 在运行时使用 jQuery 将新行添加到 HTML 表时如何避免生成重复的标签(id)
- laravel - 目标类 [AuthController] 不存在 Laravel 8
- windows - 使用 include 指令在 Windows 上使用 msys 的 Makefile 出现奇怪行为(在 linux 上完美运行)
- java - 按钮单击后 JTextField 值未更新
- xamarin - 在 Xamarin.Forms 中使用基于堆栈的缓冲区溢出保护进行编译