vue-router路由传参
tip: 用 params 传参,F5 强制刷新参数会被清空,用 query,由于参数适用路径传参的所以 F5 强制刷新也不会被清空。(传参强烈建议适用 string)
也可以选用 sessionstorage/localstorage/cookie 存储,可以参考我的另一边文章:sessionstorage、localstorage 与 cookie
params: 参数不会显示到路径上
1:配置路径 rutes
export default new Router({ routes: [ { path: '/testVueRouter', name: 'TestVueRouter', component: TestVueRouter }, { path: '/testVueRouterTo', // 一定要写 name,params 必须用 name 来识别路径 name: 'TestVueRouterTo', component: TestVueRouterTo } ] })
2:传递参数:用$router
<!-- test-vue-router 页面 --> <template> <div> <a @click="routerTo()">query 传参</a> </div> </template> <script> export default { methods: {routerTo() { this.$router.push({ name: `TestVueRouterTo`, params: { page: '1', code: '8989' } })}} } </script>
3:接受参数:用$route,少个 r, 注意啦
<!-- test-vue-router-to 页面 --> <template> <div> </div> </template> <script> export default{data() { return { page: '', code: '' } }, created() { this.getRouterData() }, methods: {getRouterData() { this.page = this.$route.params.page this.code = this.$route.params.code console.log('page', this.page) console.log('code', this.code) }}
}
</script>
query:最好也用 name 来识别,保持与 params 一致性,好记了,路径传参
1:路径配置(跟 params 一样,代码不写了)
2:传递参数页
<!-- test-vue-router 页面 --> <template> <div> <a @click="routerTo()">query 传参</a> </div> </template> <script> export default { methods: {routerTo() { this.$router.push({ name: `TestVueRouterTo`,
// 只是把 query 改了,其他都没变 query: { page: '1', code: '8989' } })}} } </script>
3:接受参数
<!-- test-vue-router-to 页面 --> <template> <div> </div> </template> <script> export default{data() { return { page: '', code: '' } }, created() { this.getRouterData() }, methods: {getRouterData() { // 只是改了 query,其他都不变 this.page = this.$route.query.page this.code = this.$route.query.code console.log('page', this.page) console.log('code', this.code) }}
}
</script>
图片区:
下面我们采用 path: '/testVueRouterTo'
1:query(成功)
<!-- test-vue-router 页面 --> <template> <div> <a @click="routerTo()">query 传参</a> </div> </template> <script> export default { methods: {routerTo() { this.$router.push({ path: '/testVueRouterTo', query: { page: '1', code: '8989' } })}} } </script>
<!-- test-vue-router-to 页面 --> <template> <div> <!-- <span>{{page}}</span> <span v-show="code ==='89'">{{code}}</span> <span>{{password}}</span> --> </div> </template> <script> export default{data() { return { page: '', code: '', password: '' } }, created() { this.getRouterData() }, methods: {getRouterData() { // debugger this.page = this.$route.query.page this.code = this.$route.query.code console.log('page', this.page) console.log('code', this.code) }}
}
</script>
2:params:(不成功)
<!-- test-vue-router 页面 --> <template> <div> <a @click="routerTo()">params 传参</a> </div> </template> <script> export default { methods: {routerTo() { this.$router.push({ path: '/testVueRouterTo', params: { page: '1', code: '8989' } })}} } </script>
<!-- test-vue-router-to 页面 --> <template> <div> <!-- <span>{{page}}</span> <span v-show="code ==='89'">{{code}}</span> <span>{{password}}</span> --> </div> </template> <script> export default{data() { return { page: '', code: '', password: '' } }, created() { this.getRouterData() }, methods: {getRouterData() { // debugger this.page = this.$route.params.page this.code = this.$route.params.code console.log('page', this.page) console.log('code', this.code) }}
}
</script>
这是由于 query 与 params 传参机制不一样,造成的差异,如果要隐藏参数用 params,如果强制刷新不被清除用 query