我在写React程序的时候,我使用useEffect钩子函数来更新路由转换后的标题,发现在Effect中的回调函数执行时,document.title打印值还是跳转之前的值,useEffect钩子函数是在Dom渲染完成后执行的,但此时不知道为什么标题未发生改变,可能是我的当时不对,怎样才可以实现?
代码如下:
import { useEffect, useRef } from "react";
import { useLocation } from "react-router-dom";
export default function useRouterTracking() {
const viewNumber = useRef({});
const location = useLocation();
const pathname = useRef(null);
const title = useRef(document.title);
useEffect(() => {
console.log(document.title)
pathname.current = location.pathname;
title.current = document.title;
if (title.current in viewNumber.current) viewNumber.current[title.current] += 1;
else viewNumber.current[title.current] = 1;
console.log(viewNumber.current);
}, [location.pathname]);
}
如上,如何获取路由更新后的标题呢?
有点没看懂你代码意图。
如果是想让每个路由自动设置页面标题,可以看看下面的示例代码有没有帮助: