返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue项目迁移React路由部分经验分享
  • 849
分享到

Vue项目迁移React路由部分经验分享

2024-04-02 19:04:59 849人浏览 薄情痞子
摘要

目录引言Vue Router:React Router V5:升级到 React Router V6引言 最近在把 Vue2.6 的老项目代码迁移到 React,以便统一技术栈更好维

引言

最近在把 Vue2.6 的老项目代码迁移到 React,以便统一技术栈更好维护。 首先遇到的难点和思维模式上的转变是:路由的迁移问题。Vue Router 迁移到 React Router,需要怎么支持嵌套的路由?

直观感觉它们之间的异同:

Vue Router:

默认使用字面量对象指定路由配置(children 属性嵌套子路由配置);

视图上使用 <router-view/> 嵌套渲染子路由.

React Router V5:

默认使用jsX指定路由配置(也可以使用字面量对象渲染JSX达成);

视图上使用嵌套 <Switch /> 渲染嵌套路由.

Tips: 渲染嵌套 JSX(同时传递props) 可以利用 <Route/> 支持 render 属性的特性:

export function RouteWithSubRoutes(route: RoutesItem) {
  return (
    <Route
      path={route.path}
      render={(props) => (
        <route.component {...props} routes={route.routes} />
      )}
    />
  )
}

参考: v5.reactrouter.com/WEB/example…

然而,这样一来,我们就比较难拿到当前路由信息的 title(名称) 信息。在 Vue 中我们可以使用 vm.$route 获得, 在 React 可以使用 react-helmet:

export function RouteWithSubRoutes(route: RoutesItem) {
  return (
    <Route
      path={route.path}
      render={(props) => (
        <>
					{}
          <Helmet>
            <title>{route.title}</title>
          </Helmet>
          <route.component {...props} routes={route.routes} />
        </>
      )}
    />
  )
}

可见 Vue Router 在处理嵌套路由方面,会比 React Router V5 较为便利(但是React Router更加灵活)。

升级到 React Router V6

React Router V6是个比较大的版本,在处理嵌套路由方面更加便利,它提供了一个接近 <router-view/> 功能的组件 <Outlet/>

简单例子:

import { Routes, Route, Outlet } from "react-router-dom";
function App() {
  return (
    <Routes>
      <Route path="invoices" element={<Invoices />}>
        <Route path=":invoiceId" element={<Invoice />} />
        <Route path="sent" element={<SentInvoices />} />
      </Route>
    </Routes>
  );
}
function Invoices() {
  return (
    <div>
      <h1>Invoices</h1>
      <Outlet />
    </div>
  );
}
function Invoice() {
  let { invoiceId } = useParams();
  return <h1>Invoice {invoiceId}</h1>;
}
function SentInvoices() {
  return <h1>Sent Invoices</h1>;
}

当然,v6 也提供了直接通过字面量对象的创建路由的方法 createHashRouter

let routeCreater
if (props.routerMode === RouterMode.History) {
  routeCreater = createBrowserRouter
} else {
  routeCreater = createHashRouter
}
const App = <RouterProvider router={routeCreater(routes, { basename })} />
ReactDom.render(App, document.querySelector('#app'))

修改业务代码成:

const SignManagement = () => {
  return (
    <>
      <p>SignManagement</p>
      {}
      <Outlet />          
    </>
  )
}
const SignApply = () => {
  return <p>SignApply</p>
}
export const routes: RouteObject[] = [
  {
    // title: '签约管理',
    element: <SignManagement />,  // <---- component keyname变成了 element 
    path: '/guildSignConManage',
    errorElement: <p>error</p>,
    children: [
      {
        // title: '签约申请',
        element: <SignApply />,
        path: 'signApply'
      }
    ]
  }
]

升级成功:

以上就是Vue 项目迁移 React 路由部分经验分享的详细内容,更多关于Vue项目迁移React路由的资料请关注编程网其它相关文章!

--结束END--

本文标题: Vue项目迁移React路由部分经验分享

本文链接: https://lsjlt.com/news/167740.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Vue项目迁移React路由部分经验分享
    目录引言Vue Router:React Router V5:升级到 React Router V6引言 最近在把 Vue2.6 的老项目代码迁移到 React,以便统一技术栈更好维...
    99+
    2024-04-02
  • 【经验】VUE Progressive Web App项目实战经验分享:从设计到部署
    1. 项目设计 在项目设计阶段,需要明确PWA应用程序的目标和受众,并根据目标用户群体的设备、网络环境和使用习惯等因素,制定合适的PWA策略。例如,如果是面向移动端的PWA应用程序,则需要考虑移动设备的屏幕尺寸、网络连接质量等因素,并采...
    99+
    2024-02-06
    Progressive Web App Vue.js 服务工作者 离线缓存 响应式设计 性能优化
  • React项目迁移Webpack Babel7的示例分析
    这篇文章主要介绍React项目迁移Webpack Babel7的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!这里简单说下 React 项目的一些配置;首先我们新建项目 re...
    99+
    2024-04-02
  • C++项目开发经验分享:C++开发项目的实践经验
    C++是一种编程语言,特别适合用于开发高性能和复杂的应用程序。作为一名C++开发者,我有幸参与了多个C++项目的开发,并积累了一些宝贵的实践经验。在本文中,我想分享一些关于C++项目开发的经验和技巧。首先,一个成功的C++项目需要良好的架构...
    99+
    2023-11-22
    实践经验 C++开发 项目经验
  • Git分布式开发实践:项目经验分享
    近年来,随着互联网技术的飞速发展,软件开发领域也迎来了巨大的变革。Git作为一种分布式版本控制工具,由于其卓越的性能和灵活的开发模式,逐渐成为开发者们首选的工具之一。而在实际的项目经验中,我们也深刻体会到了Git分布式开发的种种优势。首先,...
    99+
    2023-11-02
    实践 项目经验分享 Git分布式开发
  • Git分支管理策略优化:项目经验分享
    Git分支管理策略优化:项目经验分享引言:在软件开发过程中,版本控制是一项至关重要的任务。Git作为目前最流行的版本控制工具之一,对于项目管理和团队协作起到了至关重要的作用。在Git中,分支是一种非常重要的概念,合理的分支管理策略可以提高项...
    99+
    2023-11-03
    经验分享 Git分支管理 策略优化
  • Git分支管理策略实战:项目经验分享
    Git分支管理策略实战:项目经验分享引言:在软件开发项目中,版本控制是一个至关重要的环节。而Git作为目前广泛使用的分布式版本控制系统,具有强大的分支管理能力,可以有效地帮助团队协作开发。本文将分享针对不同项目的Git分支管理策略实战经验,...
    99+
    2023-11-03
    Git分支 管理 策略
  • 探索创新之路:Go语言项目开发的经验分享
    Go语言是一门开源的静态编程语言,近年来在项目开发中越来越受到开发者们的关注与喜爱。它简洁、高效、并发性能强,在分布式系统、云计算等领域具有广泛的应用。在本文中,我将分享我在Go语言项目开发中的一些经验和教训。首先,对于Go语言项目的开发,...
    99+
    2023-11-02
    Go语言 创新 项目开发
  • Go语言开发工作项目经验分享
    随着互联网的发展,计算机科学领域也迎来了许多全新的编程语言。其中,Go语言以其并发性和简洁的语法,逐渐成为许多开发者的首选。作为一名从事软件开发的工程师,我有幸参与了一个基于Go语言的工作项目,并在这个过程中积累了一些宝贵的经验和教训。首先...
    99+
    2023-11-02
    经验分享 Go语言开发 工作项目
  • Git代码合并技巧:项目经验分享
    Git代码合并技巧:项目经验分享在软件开发过程中,代码合并是一个非常重要的环节。特别是在多人协作开发的项目中,不同开发者所创建的分支需要进行合并,以确保代码的完整性和一致性。本文将分享一些Git代码合并的技巧和经验,帮助开发者更加高效地进行...
    99+
    2023-11-03
    技巧分享 代码合并 Git合并
  • Git工作流程优化:项目经验分享
    Git工作流程优化:项目经验分享在软件开发中,版本管理是至关重要的一环。Git作为目前最流行的分布式版本控制系统,为开发团队提供了高效、灵活的版本管理工具。然而,在实际的项目开发中,充分利用Git的功能和特性,优化工作流程,对项目的开发效率...
    99+
    2023-11-03
    优化 项目经验 Git工作流程
  • PSR2与PSR4规范的项目实践经验分享
    前言在现代软件开发中,遵循统一的编码规范是非常重要的,它可以提高代码的可读性和可维护性,减少团队合作中的摩擦。PHP-FIG(PHP Framework Interop Group)制定了一系列的PSR规范,其中最为广为人知的就是PSR2和...
    99+
    2023-10-21
    PSR规范 项目实践经验分享
  • Git与敏捷开发实践:项目经验分享
    随着技术的不断发展,软件开发行业也面临着各种挑战。为了更好地应对市场需求的变化和项目开发的复杂性,敏捷开发模式逐渐成为了主流。在敏捷开发中,版本控制系统Git也扮演了重要角色。本文将通过分享我在项目实践中的经验,探讨Git与敏捷开发的相互关...
    99+
    2023-11-02
    git 敏捷开发 项目经验
  • Go语言开发项目经验总结与分享
    Go语言是一门由Google开发的开源编程语言,因其出色的性能和简洁的语法而受到越来越多开发者的青睐。作为一名从事软件开发多年的工程师,我最近完成了一个基于Go语言的项目,积累了一些开发经验和心得,现在与大家分享。首先,我想谈谈为什么选择G...
    99+
    2023-11-04
    项目经验总结 Go语言开发经验 分享经验
  • Git开发实战:项目经验分享与总结
    Git是一款分布式版本控制系统,广泛应用于软件开发领域。在实际的项目开发中,合理利用Git进行团队协作和版本管理,能够极大地提高开发效率和项目质量。本文将分享我在Git开发中的实战经验,并总结一些注意事项和技巧,希望对读者有所启发和帮助。一...
    99+
    2023-11-04
    开发 git 实战
  • JavaScript Web Components 项目实践:分享经验与教训
    在软件开发领域,项目实践是检验知识和技能的最好方式。本文将分享我在 JavaScript Web Components 项目中遇到的一些挑战和解决方案,希望能对其他开发者有所帮助。 挑战一:理解 Web Components 的概念和实现...
    99+
    2024-02-03
    JavaScript Web Components 项目实践 挑战 解决方案
  • 利用C#开发在线美食分享平台的项目经验分享
    利用C#开发在线美食分享平台的项目经验分享一、项目概述如今,越来越多的人热衷于美食,不仅享受美味佳肴,也愿意与他人分享自己的烹饪经验和美食心得。基于这样的需求,我们决定开发一款在线美食分享平台,让用户能够方便地发布、搜索和浏览美食的相关内容...
    99+
    2023-11-04
    C# 在线 美食平台
  • vue-cli@2.x项目迁移日志的示例分析
    这篇文章给大家分享的是有关vue-cli@2.x项目迁移日志的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue-cli@2.x项目迁移日志虽然 vue-cli@3 早...
    99+
    2024-04-02
  • Redis如何在项目中合理使用经验分享
    概述 Redis作为一款性能优异的内存数据库,在互联网公司有着多种应用场景,本文将介绍Redis如何在项目中合理使用。 背景 Redis 是一个开源的内存数据结构存储系统。 可以作为数据库、缓...
    99+
    2024-04-02
  • Git在Go语言项目中的实践经验分享
    Git是一款分布式版本控制系统,已经成为了现代软件开发中不可或缺的工具。在Go语言项目中,Git的使用也是非常广泛的。本文将分享一些Git在Go语言项目中的实践经验。 一、Git的基本操作 Git的基本操作包括添加、提交、推送、拉取、合并等...
    99+
    2023-06-04
    二维码 leetcode git
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作