vue-router 入门

安装

//如果你使用的是vue-cli,那么你可以跳过了

npm install vue-router

使用

//ok,接下来你需要一个router.js文件,内容模板是这样的,请不要忘记这一步,(此后都是在工程化前提实施)
import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from './views/Home.vue'

Vue.use(VueRouter)

export default new Router({
  routes: [
    {
      name: 'xxx',
      path: '/xxx',
      component: Home
    }
  ]
})

//然后你得去到 main.js 内,将这个路由注入,这里我就直接抄官方的模板了
import Vue from 'vue'
import App from './App.vue'
import router from './router'

Vue.config.productionTip = false

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')

现在你的路由跟上面一样了,然后,你需要在 app.vue 内这样写

//因为我们为xxx路径绑定的是 hello 组件,所以你可以自己去 hello 组件内写一些东西,方便验证
<router-link to="/xxx">点我去xxx</router-link>

动态传参

有时候我们回到这样的场景,网页中有几个选项卡,每个选项卡都有对应的id,每个选项卡点进去可以看到详细信息,这个时候,我们可以这样写


<router-link :to="{name: '选项卡页面', params:{id: 选项卡id}}">选项卡1</router-link>

//在 data 中就要定义对应的id

data(){
  return {
    选项卡id: 421
  }
}

//router.js 内是这样写
{
  name: '选项卡页面',
  path: 'page/:id',
  component: 选项卡页面   //需要import进来
}

//然后当我们点击这个标签时,url 后缀会变成这样 /page/421

//那么如何获取到这个id参数呢?
//这样

this.$route.params.id

//当然,如果你是在文本插值中使用,那么就不需要加this了

编程式导航

使用编程式导航就相当于使用<router-link to="xxx"></router-link>

//首先,你要将router对象导出,然后创建 helper.js ,导入 router
//router.js
consn router = new Router({
  routes:[
    //路由信息
  ]
})

export default touter

// helper.js
import router from './router'

export function xxx(){
  router.push(这里可以写路径,也可以使用对象写法)
}

//然后在你需要使用的地方导入helper中对应的函数,监听click,方法就是你导入的这个函数

注意:如果提供了 path,params 会被忽略


嵌套路由

  • 场景:
    • 在 /user/:id 下,我们还需要在进入一个路由看到其他信息,这个路由得定义在 /user/:id 下,此时就可以使用嵌套路由
const router = new Router({
    routes: [
        // 动态路径参数 以冒号开头
        { 
            name:'user',
            path: '/user/:id',
            component: user,
            children:[
                {
                    /*它匹配的路径是 /user/:id/foo*/
                    /*将对应的router-view写到user里面*/
                    name: 'user_foo',
                    path: 'foo',
                    component: foo
                }
            ] 
        }
    ]
})

//定义在user里面
<router-link 
:to="{
  name: 'user_foo',
  params: this.$route.params.id
  }"
>
  foo
</router-link>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容