# 引言
在开发前端页面时会存在相同的页面展示,只是菜单名称不同、数据类型不同的情况。如果再拷贝一个页面来展示后期就需要维护两个页面,同时也增加了工作量。但是只使用一个页面通过传参来改变数据就方便多了。
# 路由配置
| { |
| path: '/test/:type/:menuIndex', |
| name: 'Test', |
| component: _import('xxx/Test.vue') |
| } |
# 菜单配置
| <template> |
| <el-menu |
| class="aside-menu" |
| :default-active="menuIndex.toString()" |
| @select="handleSelect" |
| > |
| <el-menu-item |
| index="1" |
| class="aside-menu-item" |
| > |
| <template |
| <span>TEST1</span> |
| <el-icon :size="20"><TrendCharts /></el-icon> |
| </template> |
| </el-menu-item> |
| <el-menu-item |
| index="2" |
| class="aside-menu-item" |
| > |
| <template |
| <span>TEST2</span> |
| <el-icon :size="20"><Orange /></el-icon> |
| </template> |
| </el-menu-item> |
| </el-menu> |
| </template> |
| |
| methods: { |
| handleSelect (val) { |
| if (val === '1') { |
| this.$router.push({ path: '/test/type1/' + val }) |
| } else if (val === '2') { |
| this.$router.push({ path: '/test/type2/' + val }) |
| } |
| } |
| } |
# 页面
| created () { |
| this.$watch( |
| () => this.$route.params, |
| (toParams, previousParams) => { |
| if (isNotEmpty(toParams.menuIndex)) { |
| this.menuIndex = toParams.menuIndex |
| } |
| if (isNotEmpty(toParams.type)) { |
| this.type = toParams.type |
| } |
| // 根据type查询数据 |
| ... |
| } |
| ) |
| if (isNotEmpty(this.$route.params.menuIndex)) { |
| this.menuIndex = this.$route.params.menuIndex |
| } |
| if (isNotEmpty(this.$route.params.type)) { |
| this.type = this.$route.params.type |
| } |
| }, |
| mounted () { |
| // 根据type查询数据 |
| ... |
| } |