我面临一个问题,我希望有人知道如何克服它。
根据我们的 index.html 文件,我们所有网站的页面都有一个默认标题:
<html lang="en">
<head>
<title>My Page Title</title>
</head>
...
</html>
这意味着所有选项卡都会根据索引文件显示页面标题。
在网站的一个页面上,我想根据页面加载返回的信息覆盖标题。
例如:
useEffect(() => {
const displayTitle = loadTitle();
document.title = displayTitle;
}, []);
这完全按照我想要的方式工作,当选项卡加载时,选项卡标题会更新。
然而,问题是当用户单击链接离开该页面时。尽管已在该选项卡中加载了另一个页面,但选项卡标题仍保留为已加载的值。选项卡标题显示为加载的值,直到页面硬刷新。
有什么方法可以让我通过加载设置页面的文档标题,如上图所示,但一旦导航离开,使其返回到默认值?
useEffect
可以给出一个返回值,该返回值应采用函数的形式,当组件(或具体是钩子)卸载时将调用该函数。
您可以使用这个:
useEffect(() => {
const displayTitle = loadTitle();
document.title = displayTitle;
return () => document.title = ""; // However you'd like to reset the title
}, []);
请参阅 useEffect 文档。