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就会面临的. 我想到有两个方案:

  1. 每个路由都指定document.title

  2. 把hook里这里的代码:

    if (!keepOnUnmount) {
        // 如果不指定依赖,读到的就是旧title
        document.title = oldTitle;
      }

改成 

   if (!keepOnUnmount) {
        // 注意这里变成了defaultTitle,也就是默认标题
        document.title = defaultTitle;
      }

这个供你在实际使用的时候参考

0
2
Nolan
回复
詹姆士郭德纲
react-router可以做这件事吗,这个我还真不知道
2021-06-30
共2条回复

React17+Hook+TS4 优质实践,仿 Jira 企业级项目

解锁 React17 高阶用法,轻松应对大型复杂长周期项目

2691 学习 · 1236 问题

查看课程