【问题标题】:Routing between two components in Vue.jsVue.js 中两个组件之间的路由
【发布时间】:2021-07-28 14:58:30
【问题描述】:

嗯,这是我的App.vue

    <template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png">
    <Home/>
    <AddService/>
  </div>
</template>

<script>
import Home from './components/Home.vue'
import AddService from './components/AddService.vue'
import Vue from 'vue'
import VueRouter from 'vue-router'

const router = new VueRouter({
    mode: 'history',
    routes: [
        {
            path: '/home',
            name: 'home',
            component: Home
        },
         {
            path: '/addService',
            name: 'addService',
            component: AddService
        }
    ]
});
        
Vue.use(router)


export default {
  name: 'App',
  components: {
    Home
  }
}
</script>

我想在 Home 和 AddService 组件之间进行路由。我的主页有一个链接,基本上是这样的: &lt;a href="../addService"&gt;Add a new Service&lt;/a&gt;

如果我点击这个链接,我应该会被重定向到 AddService 组件。但目前它只在搜索栏中添加了正确的网址,但我没有被重定向

【问题讨论】:

    标签: javascript vue.js vue-router


    【解决方案1】:

    在使用 Vue 路由器时,您不应该使用 href 制作自己的锚标记以进行导航。要导航,您可以使用router-link component

    如果您想以编程方式导航,可以使用路由器上的push method

    【讨论】:

      【解决方案2】:

      你的App.vue 应该是这样的

      <template>
          <div id="app">
              <router-view />
          </div>
      </template>
      

      您的index.js 应该是这样的

      import Vue from 'vue'
      import App from '@/App.vue'
      import VueRouter from 'vue-router'
      import Home from '@/components/Home'
      import AddService from '@/components/AddService'
      
      Vue.use(VueRouter)
      
      const routes = [
          {
              path: '/',
              name: 'Home',
              component: Home
          },
          {
              path: '/add-service',
              name: 'Add Service',
              component: AddService
          }
      ]
      
      const router = new VueRouter({
          mode: 'history',
          base: process.env.BASE_URL,
          routes
      })
      
      
      new Vue({
          el: '#app',
          router,
          render: h => h(App)
      }).$mount('#app')
      

      但最佳实践是使用外部 router/index.js 文件来声明所有路由并导入 index.js(主应用程序文件)并在声明新 Vue 实例时使用它。

      之后你可以在你的代码中添加router-link

      <router-link to="path">
      

      或以编程方式导航

      this.$router.push({ name: AddService })
      

      this.$router.push({ path: '/' })
      

      【讨论】:

        猜你喜欢
        • 2016-07-27
        • 2019-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多