如何将 vue.js 中的子组件设置为“默认”

Posted

技术标签:

【中文标题】如何将 vue.js 中的子组件设置为“默认”【英文标题】:How to set a children compontent in vue.js to be shown as "default" 【发布时间】:2022-01-11 22:28:42 【问题描述】:

我有一个在 Vue.js 3 中制作的项目,使用带有如下配置的 vue-router:

const routes = [
  
    path: '/',
    name: "home",
    component: Home
  ,
  
    path: '/philosophy',
    component: philosophy,
    children: [
        path: '/',
        component: card1
      ,
      
        path: '/card2',
        component: card2
      ,
      
        path: '/card3',
        component: card3
      ,
      
        path: '/card4',
        component: card4
      ]
    
]

每张卡片都是通过router-link 指令加载的,在<div> 元素内部,其中有一个rowter-view

card1 的路径是"/",目的是在用户进入路径“/philosophy”时加载 card1。这在 Vue 2 中工作得很好,但在 Vue 3 中却不行,组件不再加载。 Vue 3 中有什么方法可以让组件card1 被默认加载

在此先感谢您的帮助。

【问题讨论】:

【参考方案1】:

尝试将默认路径从“/”更改为空字符串文字""。然后在哲学组件中在模板中添加<router-view> 以显示默认组件。

路线:

const routes = [
  
    path: '/philosphy',
    component: philosophy,
    children: [
        path: '',  //default view
        component: card1
      ,
      
        path: '/card2',
        component: card2
      ,
      
        path: '/card3',
        component: card3
      ,
      
        path: '/card4',
        component: card4
      ]
    
]

哲学成分:

 <template>
    <router-view>
    </template> 
    export default 
    name: "Philosophy"
  

【讨论】:

如果他不在导航按钮中使用:to="",它就可以工作。 @Mises 我试过了,但它破坏了代码,调用路线“/philosophy”时屏幕上什么也没有。我曾经在导航按钮中使用 =“/philosophy”,效果很好。 @SDEscobedo 使用to="philosophy" @SDEscobedo 你错过了path:中的拼写错误

以上是关于如何将 vue.js 中的子组件设置为“默认”的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据传递给 vue.js 中的子组件

如何将初始表单值传递给 Vue.js 中的子组件?

将变量传递给 Vue.js 中的子组件

对 vue.js 组件中的 props 进行操作

vue.js通过router-link过去的页面如何默认从最顶部开始显示页面

选择组件 Vue JS - 默认选择值