目前完成的功能:登录注册,商品分类的路由
![](https://img.haomeiwen.com/i7983800/2a0e0da30409eeea.gif)
获取页面数据的思路:
一、定义api
打开api.js
![](https://img.haomeiwen.com/i7983800/1d9add220824f858.png)
二、在productlist.vue页面创建时获取数据
打开productlist.vue
![](https://img.haomeiwen.com/i7983800/128914d91bc45044.png)
三、编写mock.js
打开mock.js
![](https://img.haomeiwen.com/i7983800/1edb2ddb561a448a.png)
四、测试、修改
![](https://img.haomeiwen.com/i7983800/811b48ea262df030.png)
可以看出来其实数据是回来了的,我先将数据渲染到页面上
打开productlist.vue
<template>
<div>
<h1>prolist</h1>
<p v-text="$route.params.class"></p>
<p>共{{productlist.length}}个商品</p>
<ul>
<li
v-for="(item, index) in productlist"
:key="item.productclass"
v-text="item.productname">
</li>
</ul>
</div>
</template>
<script>
import {GetProductList} from '../../../api/api'
export default {
data () {
return {
productlist: []
}
},
mounted () {
let params = null
if (this.$route.params.class === 'all') {
params = ''
} else {
params = this.$route.params.class
}
GetProductList(params).then(res => {
console.log(res)
this.productlist = res.data.productlist
})
}
}
</script>
效果
![](https://img.haomeiwen.com/i7983800/358e23fd68188027.png)
看起来是成功了,但其实有个大问题
![](https://img.haomeiwen.com/i7983800/b46d0ace3e09f2d2.gif)
我们点击分类切换,但实际上它并没有切换,这是因为我用的动态路由,切换路由的时候这个productlist.vue的页面并没有重建,自然也就没有重新生产mounted(),要解决这个问题有2个方法
-
1、使用watch()来监听this.$route.params.class的值,当这个值变化的时候就触发获取数据的方法
-
2、我们在这个页面<router-view></router-view>的地方绑定一个动态的:key,这个切换路由的时候它就会重建这个页面
我采用第二种办法,这样还可以加个过渡动画,而且更简单
打开product.vue
![](https://img.haomeiwen.com/i7983800/a5e4b47b9b884df6.png)
![](https://img.haomeiwen.com/i7983800/bbf2ccbfef379057.png)
效果:
![](https://img.haomeiwen.com/i7983800/140c980067ccb35a.gif)
这样就可以真正的动态切换路由了
网友评论