6、嵌套路由

 

 代码:App.vue

<template>
  <div class="w">
    <router-link active-class="active" to="/about">About</router-link> |
    <router-link active-class="active" to="/home">Home</router-link>
    <router-view></router-view>
  </div>
</template>

<script>
export default {

}
</script>

<style>
.w {
  width: 500px;
  height: 300px;
  background-color: #eee;
  margin: 100px auto;
  text-align: center;
}
</style>

home.vue:

message.vue  和 new.vue是home.vue组件下的二级组件,同于home组件的孩子,所以两者的路由展示发生在home组件中

注意:

在home组件中,指向二级组件的路径写法是 to:“/home/new”

在index.js 中,message.vue  和 new.vue是home.vue组件下的二级组件,所以这两个组件的path、component用children以数组形式展示,并写在home内

<template>
    <div class="home">
        <h1>这是Home组件</h1>
        <div>
            <router-link to="/home/message">Message</router-link>   |  
            <router-link to="/home/new">Home</router-link>
            <router-view></router-view>
        </div>

    </div>
</template>

<script>
export default {

} 
</script>

<style>

</style>

new.vue

<template>
    <ul>
        <li>news001</li>
        <li>news002</li>
        <li>news003</li>
    </ul>
</template>
 
<script>
export default {
}
</script>
 
<style lang="">
    
</style>

message.vue

<template>
    <div class="message">
        <ul>
            <li v-for="item in list" :key="item.id">
                <span>{{item.id}}————{{item.title}}</span>
            </li>
        </ul>
    </div>
</template>

<script>
export default {
    data() {
        return {
            list: [
                { id: '001', title: '感谢' },
                { id: '002', title: '感谢啊' },
                { id: '003', title: '非常感谢' }
            ]
        }
    }

}
</script>

<style>

</style>

index.js

在index.js 中,message.vue  和 new.vue是home.vue组件下的二级组件,所以这两个组件的path、component用children以数组形式展示,并写在home内

注意:二级路由的组件指向前面不加“/”,path:'message',

import Vue from 'vue'
import VueRouter from 'vue-router'

// 引入组件
import About from '@/components/about.vue'
import Home from '@/components/home.vue'
import Message from '@/components/message.vue'
// 二级组件同样在index.js中引入
import New from '@/components/new.vue'
Vue.use(VueRouter)
export default new VueRouter({
    routes:[
        {
            path:'/about',
            component:About
        },
        {
            path:'/home',
            component:Home,
            // message、new组件是home组件路径下的组件,同于home的孩子
            children:[
                {
                    // 二级组件(嵌套组件在编写路径时前面不加“/”)
                    path:'message',
                    component:Message
                },
                {
                    path:'new',
                    component:New
                },

            ]
        }
    ]

})

在React Router v6中,嵌套路由的使用方式略有不同。你可以使用`<Route>`组件来定义嵌套路由,并使用`element`属性指定要渲染的组件。下面是一个示例: ```jsx import { Route, Routes } from 'react-router-dom'; import { News } from './News'; import { Message } from './Message'; export const Home = () => { return ( <div> <h3>Home</h3> <div> <ul className="nav nav-tabs"> <li> <MyNavLink to="news">News</MyNavLink> </li> <li> <MyNavLink to="message">Message</MyNavLink> </li> </ul> {/* 注册路由 */} <Routes> <Route path="news" element={<News />} /> <Route path="message" element={<Message />} /> </Routes> </div> </div> ); }; ``` 在上面的代码中,我们使用`<Routes>`组件包裹了多个`<Route>`组件,每个`<Route>`组件定义了一个嵌套路由的路径和要渲染的组件。例如,当路径为"/news"时,会渲染`<News>`组件。这样,当用户访问"/news"时,`<News>`组件就会被渲染在嵌套路由的位置上。 希望这能回答你的问题!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [React Router v6 路由配置,嵌套路由](https://blog.csdn.net/Snow_GX/article/details/123656412)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [react-router-dom v6版本 嵌套路由](https://blog.csdn.net/jzh1359314792/article/details/126526047)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值