点击歌单进入歌单详情效果

效果展示:

                                                                                           

 

 

 点击后进入歌单对应的详情页:

                                                                                                            

 

 

代码步骤:

1.轮播歌单

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.歌单详情页面

建立listView.vue与App.vue间的联系

在router/index .js 下

 

 

 

分块歌单详情制作页面

介绍栏

1.新建components / listViewTop.vue

2.联系listViewTop.vue 与 listView.vue

 

 

 

在listView.vue 中引入配置listViewTop.vue

3.index.js引入歌单详情接口

 

 

 

4.在listView.vue总页面

引入

 

 

 接口

 

 

 

5.设计listViewTop.vue页面

其中左上角图标返回上一页设置:

 

 

 

3.列表

 

 

 

1.新建components / playList.vue

2.联系playList.vue 与 listView.vue

 

 

 

在listView.vue 中引入配置playList.vue

实现点击那个歌单就进入哪个歌单详情

除了使用 <router-link> 来创建 a 标签来定义导航链接,通过设置不同的id跳转到指定页面,我们还可以借助 router 的实例方法,通过编写代码来实现。

动态路由的传参

轮播图 musicList.vue中

:to="{path:'/listview',query:{id:item.id}}"

 

 

 router将在 listview 组建中接收

 

 

异步函数

ajax是异步函数(网络请求花费时间,然而代码不等待直接往下执行 ) async(声明一个异步函数) 与 await(等待结果) 是一组结构

1.用setup()方法获取当前地址栏里的 id

 

 

 

在store / index.js 中:

定义一个函数,修改state中的playlist音乐播放列表数据

 

posted @ 2022-05-12 11:25  絮行  阅读(140)  评论(0)    收藏  举报