React更改document.title浏览器标题名字react-router-dom V6路由处理方案

react项目修改修改document.title浏览器标题名字
此文只介绍react-router-dom的 V6 版本 处理方案

V6 处理方案:

方案一: 组件外封装一层父组件

思路:每个组件外层包一层父组件,父组件处理document.title,子组件显示页面

  • 在Route 标签的事件钩子函数处理,v6 会显示最后一条数据,无用(v5 压根没有这些事件钩子)
  • onMounted、onEnter、onBeforeMount等事件都会在初始化时候一次性执行完毕,切换路由不执行
import React from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import routers from '../routers';

// 封装一层 专门负责显示页面标题
const DomTitle = ({ item }) => {
  document.title = item.title;
  return <item.component />
}

const App = () => {
  return (
    <Router>
      <Routes>
        {routers.map((item, index) => {
          return (
            <Route
              key={`routers${index}`}
              exact
              path={item.path}
              element={<DomTitle item={item} />}
              // onMounted、onEnter、onBeforeMount等事件都会在初始化时候执行,切换路由不执行
            />
          );
        })}
      </Routes>
    </Router>
  );
};

export default App;

routers.js

import HandleRouter from "../pages/handleRouter";

const routers = [
  {
    title: '测试title',
    path: '/',
    component: HandleRouter,
  },
  // ... 其他路由
]
 
export default routers;

方案二: 单个组件内设置,很笨,但是有效,不建议用

单个组件内设置:document.title=“名字”

  useEffect(() => {
    document.title = '名字';
  }, [])

方案三: 使用插件,没啥技术含量

比如:umijs:有Helmet这个插件API ,专门用来自定义页面头部
… 其他插件自己摸索


此文只介绍react-router-dom的V6 版本处理方案

拓展:


注意react-router-dom V5 和 V6略有不同。

若对你有帮助,随手点个赞吧。到处结束,有问题留言~~

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值