vue和react路由的区别

文章对比了Vue2和Vue3中的路由使用,包括newVueRouter与createRouter,以及路由参数传递方式。在React部分,提到了react-router-dom的v5和v6版本,类组件和函数式组件的路由配置、参数获取和传递方法。同时,介绍了动态路由、嵌套路由和路由元信息的配置。
摘要由CSDN通过智能技术生成

一,vue2

1,路由用3.x的

2,实例化new VueRouter()

3,获取路由实例及路由信息:用this.$router.push()及this.$route.params

4,路由传参(参数都不丢失):

(1)动态路由: this.$route.params.id(路由表提前配置)

(2)query传参: this.$route.query.id

注:路径用path, react的路径用pathname,如this.$router.push({ path:"admin",params:{id:id}}

5,有路由元meta{},可以配置标题等; 子路由用children; components配置命名视图

二,vue3

1,路由用4.x的

2,实例化createRouter()

3,用useRouter()生成的路由对象实例,useRoute()生成路由信息对象(如router.push('/index/home'))

4,路由传参:同上

5,有路由元meta{},可以配置标题等,子路由用children; components配置命名视图

三,react的类组件

1,路由用v5的react-router-dom

2,路由配置

(1)一级路由写在APP里

(2)嵌套路由: 在子一级页面(如index)设置二级路由规则(有嵌套路由不写exact)

(3)路由组件:Switch, Route(path及component) , Redirect(from和to) , Link, NavLink(active 类)

及路由管理组件:BrowserRouter , HashRouter ,

注:Route组件本身就充当router-view的占位作用

3,路由实例及路由信息:
跳路由this.props.history

获取路由信息this.props.match.params(动态路由配置并传参)

获取路由信息this.props.location.state.id(用state传参)(query同理但是数据刷新丢失)

注: 路由及状态管理都被注入到props的属性中; 不是路由规则的可以用withRouter包裹获取路由方法;路径用pathname

4,自己动态配置路由

<Suspense fallback={<div className='loading' >加载中</div>}>
                <Switch >
                    {
                        this.props.routes.map((item, index) => {
                            return (
                                item.from ?
                                    <Redirect key={index} exact from={item.from} to={item.to} /> :
                                    <Route key={index} path={item.path} render={(props) => {
                                        if (item.children) {
                                            return <item.component {...props} routes={item.children} />
                                        } else {
                                            return <item.component {...props} />
                                        }
                                    }} />
                            )
                        })
                    }
                </Switch>
            </Suspense>

引入自己写的路由表RouterView

一级路由
<RouterView routes={routes} />
二级路由
<RouterView routes={this.props.routes} />

四,react的函数式组件

1,路由用v6的react-router-dom

2,路由配置

(1)所有嵌套路由规则写在APP里(没有exact),嵌套的二级路由在一级路由中用Outlet显示占位

(2)或定义类似于vue的路由规则,使用useRoutes()生成路由表,

(3)路由组件:Routes, Route(path及element套组件) , Navigate(被Route包裹及to) , Link, NavLink(active 类)

及路由管理组件:BrowserRouter , HashRouter ,

注:v6移除了withRouter高阶组件

3,路由实例及路由信息:
跳路由useNavigate(),实例化后直接跳路径; 或NavLink及Link

获取路由信息useLocation()

4,路由传参(参数都不丢失):

(1)动态路由(路由表提前配置):

useParams()获取动态路由参数

var navigate = useNavigate()
navigate('/detail/'+88888)
var params = useParams()

(2)state传参:

useLocation() 获取state参数
(3)查询字符串传参( query传参 ):

useSearchParams() 获取query参数

navigate('/detail?id=99999')
var [searchParams,setSearchParams] = useSearchParams();
console.log( searchParams.get('id') );

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VueReact都是流行的前端框架,它们都有自己的路由系统。下面是VueReact路由区别和举例: 1. 路由配置方式不同 Vue使用Vue Router来管理路由,它的路由配置是通过路由表来实现的。路由表是一个数组,其中每个对象都代表一个路由。每个路由对象都包含路径、组件等属性。 React使用React Router来管理路由,它的路由配置是通过JSX来实现的。JSX语法可以直接嵌入路由信息,从而实现路由的配置。 下面是VueReact路由配置的示例代码: Vue路由配置: ``` const router = new VueRouter({ routes: [ { path: '/', component: Home }, { path: '/about', component: About } ] }) ``` React路由配置: ``` <Router> <Switch> <Route exact path="/" component={Home} /> <Route path="/about" component={About} /> </Switch> </Router> ``` 2. 路由跳转方式不同 在Vue中,可以使用`this.$router.push()`方法来进行路由跳转。这个方法会将当前路由推入路由历史栈中,从而实现路由跳转。在React中,可以使用`<Link>`组件或者`history.push()`方法来进行路由跳转。`<Link>`组件会在点击时将路由推入路由历史栈中,而`history.push()`方法则需要手动调用。 下面是VueReact路由跳转的示例代码: Vue路由跳转: ``` // 在组件中调用 this.$router.push('/about') ``` React路由跳转: ``` // 使用Link组件 <Link to="/about">About</Link> // 使用history.push()方法 history.push('/about') ``` 3. 路由参数传递方式不同 在Vue中,可以使用路由参数来传递参数。通过`$route.params`对象可以获取路由参数。在React中,可以使用URL参数来传递参数。通过`props.match.params`对象可以获取URL参数。 下面是VueReact路由参数传递的示例代码: Vue路由参数传递: ``` // 在路由表中定义参数 { path: '/user/:id', component: User } // 在组件中读取参数 this.$route.params.id ``` React路由参数传递: ``` // 在路由表中定义参数 <Route path="/user/:id" component={User} /> // 在组件中读取参数 props.match.params.id ``` 总之,VueReact路由虽然都实现了前端路由功能,但是在路由配置方式、路由跳转方式和路由参数传递方式等方面存在差异。开发者应该根据项目需求和个人喜好选择适合自己的框架。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值