点击歌单进入歌单详情效果
点击后进入歌单对应的详情页:
代码步骤:
1.新建components /musicList.vue
2.联系musicList.vue 与 HomeView.vue
在HomeView.vue 中引入配置musicList.vue
3.配置轮播图和接口
引入轮播图
<template> <div class="musicList"> <div class="musicList-top"> <div class="title">发现好歌单</div> <a class="more">查看更多</a> </div> <div class="mlist"> <div class="swiper-container" id="musicSwiper"> <div class="swiper-wrapper"> <div class="swiper-slide" v-for="(item,i) in musics.musicList" :key="i"> <img :src="item.picUrl" alt=""> <div class="name">{{item.name}}</div> <div class="count"> <svg class="icon" aria-hidden="true"> <use xlink:href="#icon-zanting2-copy"></use> </svg> <span>{{item.playCount}}</span> </div> </div> </div> </div> </div> </div> </template> <script> import {getMusic} from '@/api/index' import {reactive, onMounted, onUpdated} from 'vue' import 'swiper/css/swiper.css' import Swiper from 'swiper' export default { name: "musicList", setup() {//vue3组合api let musics = reactive({ musicList: []//保存获取的歌单列表 }) onMounted(async () => {//view与model绑定成功之后生命周期函数 let res = await getMusic(10) console.log(res.data.result) musics.musicList = res.data.result.slice(4, 14) }) onUpdated(() => { var swiper = new Swiper('#musicSwiper', { slidesPerView: 3,//每一屏显示几块内容 spaceBetween: 10//每个内容间的间距 }) }) return {musics} }} </script>
在查找接口为 /personalized?limit=10
index.js中接口封装
2.歌单详情页面
在router/index .js 下
分块歌单详情制作页面
介绍栏
1.新建components / listViewTop.vue
2.联系listViewTop.vue 与 listView.vue
在listView.vue 中引入配置listViewTop.vue
4.在listView.vue总页面
引入
接口
5.设计listViewTop.vue页面
其中左上角图标返回上一页设置:
1.新建components / playList.vue
2.联系playList.vue 与 listView.vue
实现点击那个歌单就进入哪个歌单详情
除了使用 <router-link>
来创建 a 标签来定义导航链接,通过设置不同的id跳转到指定页面,我们还可以借助 router 的实例方法,通过编写代码来实现。
动态路由的传参
轮播图 musicList.vue中
router将在 listview 组建中接收
异步函数
ajax是异步函数(网络请求花费时间,然而代码不等待直接往下执行 ) async(声明一个异步函数) 与 await(等待结果) 是一组结构
1.用setup()方法获取当前地址栏里的 id
在store / index.js 中:
定义一个函数,修改state中的playlist音乐播放列表数据