路由传值 this.$router.push()
(1) 想要导航到不同的URL,使用router.push()方法,这个方法会向history栈添加一个新纪录,所以,当用户点击浏览器后退按钮时,会回到之前的URL
(2)当点击 时,这个方法会在内部调用,即点击 等同于调用 router.push(…)
a)声明式:
b)编程式:router.push(…)
c)该方法的参数可以是一个字符串路径,或者一个描述地址的对象。
// 字符串
router.push(‘home’)
// 对象
router.push({ path: ‘home’ })
// 命名的路由
router.push({ name: ‘user’, params: { userId: ‘123’ }})
// 带查询参数,变成 /register?plan=private
router.push({ path: ‘register’, query: { plan: ‘private’ }})
const userId = ‘123’
router.push({ name: ‘user’, params: { userId }}) // -> /user/123
router.push({ path: /user/${userId}
}) // -> /user/123
// 这里的 params 不生效
router.push({ path: ‘/user’, params: { userId }}) // -> /user
router:译为路由器,上面都是路由,这个是路由器,我们可以理解为一个容器包含上述两个或者说它是一个管理者,负责管理上述两个;举个常见的场景的例子:当用户在页面上点击按钮的时候,这个时候router就会去routes中去查找route,就是说路由器会去路由集合中找对应的路由;
router 是一个机制,相当于一个管理者,它来管理路由,路由器对象,包含一些操作路由的功能函数,来实现编程式导航
r
o
u
t
e
r
.
p
u
s
h
(
)
t
h
i
s
.
router.push() this.
router.push()this.router 实际上 就是全局 路由对象 任何页面 都可以 调用 push(), go()等方法
routes: 表示多个数组的集合;
routes:指创建vue-router路由实例的配置项。用来配置多个route路由对象
route:首先它是个单数,译为路由,即我们可以理解为单个路由或者某一个路由;
route:指路由对象表示当前激活的路由的状态信息。如:this.
r
o
u
t
e
指
的
是
当
前
路
由
对
象
,
p
a
t
h
/
m
e
t
a
/
q
u
e
r
y
/
p
a
r
a
m
s
t
h
i
s
.
route指的是当前路由对象,path/meta/query/params this.
route指的是当前路由对象,path/meta/query/paramsthis.route 表示当前正在用于跳转的当前路由器对象,可以调用其name、path、query、params等属性;
routes () {
return this.$router.options.routes
},
this.$router.options.routes 可以拿到初始化时配置的路由规则
this.$route 可以拿到当前路由信息
`
// 通过当前路径找到二级菜单对应项,存到store,用来渲染左侧菜单
initCurrentRoutes () {
const { path } = this.$route
let route = this.routes.find(
item => item.path === '/' + path.split('/')[1]
)
// 如果找不到这个路由,说明是首页
if (!route) {
route = this.routes.find(item => item.path === '/')
}
this.$store.commit('permission/SET_CURRENT_ROUTES', route)
this.setSidebarHide(route)
}