【WEB】Vue2.0音乐APP实战中的知识点总结(三)

一.效果展示

这里写图片描述

二.知识点总结

1.从歌手界面跳转到歌手详情界面:
首先配置路由:

{
        path:'/singer',
        component:Singer,
        children:[
            {
                path:':id',
                component:SingerDetail
            }
        ]
    },

之后,在singer.vue中挂载子路由

    <router-view></router-view>

由于需求是点击列表进行跳转,因此在列表所在的组件中添加对列表的点击事件

 <li @click="selectItem(item)" ></ li >
selectItem(item) {
        this.$emit('select', item)
      },

注:由于list.vue是基础组件,因此不会构建业务逻辑,只负责把事件派发出去即可。
在singer中监听实例

<listview @select="selectSinger" :data="singers"></listview>

实现:

selectSinger(singer){
        this.$router.push({
            path:`/singer/${singer.id}`
        })
        this.setSinger(singer)
    },

2.transform标签
转场动画:在singer.vue中

<transition name="slide">
    <music-list :songs="songs" :title="title" :bg-image="bgImage">
    </music-list>
</transition>

 .slide-enter-active, .slide-leave-active
    transition:all 0.3s
 .slide-enter, .slide-leave-to
    transform:translate3d(100%,0,0)

3.VueX
在跳转的过程中,需要像详情页传入歌手的信息。这就需要使用Vuex, 也是本节的重点。

Vuex是一个专为Vue.js应用程序开发的状态模式。它采用集中式存储管理应用的所有组件的状态,并以规则保证状态以一种可预测的方式发生变化。

这里写图片描述

state.js

const state={
    singer:{}
}

export default state

mutation-type.js

export const SET_SINGER = 'SET_SINGER'

mutation.js

import * as types from './mutation-type'

const matutaions = {
    [types.SET_SINGER] (state,singer){
        state.singer=singer
    }
}

export default matutaions

getters.js

export const singer=state => state.singer

index.js

import Vuex from "vuex"
import Vue from 'vue'
import * as actions from './actions'
import * as getters from './getters'
import state from './state'
import mutations from './mutations'
import createLogger from 'vuex/dist/logger'
Vue.use(Vuex)
const debug=process.env.NODE_ENV !=='production'
export default new Vuex.Store({
    actions,
    getters,
    state,
    mutations,
    strict:debug,
    plugins:debug?[createLogger()]:[]
})

action.js//异步操作,或对mutations进行封装

在main.js中

import store from './store'
new Vue({
  el: '#app',
  render:h=>h(App),
  store,
  router

})

以上,VUEX配置完毕

在singer.vue中,利用VUEX提供的语法糖,更加方便。

import {mapMutations} from 'vuex'

在methods中

    ...mapMutations({
        setSinger:'SET_SINGER'//对象映射
    }),
selectSinger(singer){
        this.$router.push({
            path:`/singer/${singer.id}`
        })
        this.setSinger(singer)//传入singer,实现对与singer的提交
    },

在singer-detail中

import {mapGetters} from 'vuex'
export default{

        computed:{

            ...mapGetters([
                'singer'//拿到sing
            ])
        },

调用:this.singer
4.回退

this.$router.back()
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值