useDocumentTitle这个hook有bug
来源:8-2 ⽤useRef实现useDocumentTitle - useRef与Hook 闭包详解(下)

慕粉1848305810
2021-02-25
如果有两个页面有使用useDocumentTilte这个hook,先在这两个页面切换,这时title是正确的,但是如果这时再切换到一个没有使用这个hook的页面,那这个页面会是最后一次有用这个hook的title,那个设置也没有用。
写回答
1回答
-
Nolan
2021-02-27
hi, 你说的有道理,这个确实是这个hook的一个局限,虽然它带有'退出还原'的功能,但是只能'退出还原'到上一个document title. 但是这个并没有什么完美的解决方法,想象一下如果我们不用这个hook,用纯 js 来控制,也是会面临相同的问题的,所以这个问题和这个hook关系不大,而是只要处理document title就会面临的. 我想到有两个方案:
每个路由都指定document.title
把hook里这里的代码:
if (!keepOnUnmount) { // 如果不指定依赖,读到的就是旧title document.title = oldTitle; }
改成
if (!keepOnUnmount) { // 注意这里变成了defaultTitle,也就是默认标题 document.title = defaultTitle; }
这个供你在实际使用的时候参考
022021-06-30
相似问题