博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue_music:播放器(一)vuex设置,位置、界面
阅读量:6135 次
发布时间:2019-06-21

本文共 2651 字,大约阅读时间需要 8 分钟。

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

播放器组件play.vue在多个组件中都有使用,因此放在app.vue中,同时基于vuex进行管理

1.组件放置在app.vue中

2.state.js定义状态

import {playMode} from 'common/js/config'const state = {  singer: {},                      playing: false,             //playing: 播放状态  fullScreen: false,          //fullScreen: 是否全屏(normal播放器/mini播放器)  playlist: [],               //点击前进、后退实际是有一个播放列表:playlist  sequenceList: [],           //sequenceList顺序播放列表  mode: playMode.sequence,    //mode:播放模式  0顺序  1 循环  2 随机  currentIndex: -1,           //currentIndex 当前播放的歌曲  disc: {},  topList: {}}export default state

3.获取state的一些状态getter.js

需要从 store 中的 state 中派生出一些状态,Vuex 允许我们在 store 中定义“getter”(可以认为是 store 的计算属性)

export const singer = state => state.singerexport const playing = state => state.playingexport const fullScreen = state => state.fullScreenexport const playlist = state => state.playlistexport const sequenceList = state => state.sequenceListexport const mode = state => state.modeexport const currentIndex = state => state.currentIndexexport const currentSong = (state) => {  return state.playlist[state.currentIndex] || {}}export const disc = state => state.discexport const topList = state => state.topList

4.mutations.js

更改 Vuex 的 store 中的状态的唯一方法是提交 mutation

//使用常量替代 mutation 事件类型在各种 Flux 实现中是很常见的模式。//这样可以使 linter 之类的工具发挥作用,同时把这些常量放在单独的文件中可以让你的代码合作者对整个 app 包含的 mutation 一目了然export const SET_SINGER = 'SET_SINGER'export const SET_PLAYING_STATE = 'SET_PLAYING_STATE'export const SET_FULL_SCREEN = 'SET_FULL_SCREEN'export const SET_PLAYLIST = 'SET_PLAYLIST'export const SET_SEQUENCE_LIST = 'SET_SEQUENCE_LIST'export const SET_PLAY_MODE = 'SET_PLAY_MODE'export const SET_CURRENT_INDEX = 'SET_CURRENT_INDEX'export const SET_DISC = 'SET_DISC'export const SET_TOP_LIST = 'SET_TOP_LIST'
import * as types from './mutation-types'const mutations = {  [types.SET_SINGER](state, singer) {    state.singer = singer  },  [types.SET_PLAYING_STATE](state, flag) {    state.playing = flag  },  [types.SET_FULL_SCREEN](state, flag) {    state.fullScreen = flag  },  [types.SET_PLAYLIST](state, list) {    state.playlist = list  },  [types.SET_SEQUENCE_LIST](state, list) {    state.sequenceList = list  },  [types.SET_PLAY_MODE](state, mode) {    state.mode = mode  },  [types.SET_CURRENT_INDEX](state, index) {    state.currentIndex = index  },  [types.SET_DISC](state, disc) {    state.disc = disc  },  [types.SET_TOP_LIST](state, topList) {    state.topList = topList  }}export default mutations

5.actions.js

actions应用场景:

  1. 异步操作
  2. 封装多个mutations更改state

6.界面

图片描述

转载地址:http://xleua.baihongyu.com/

你可能感兴趣的文章
谈谈js中的函数节流
查看>>
Jenkins实现一键部署maven项目
查看>>
Binary Tree Traversal
查看>>
ArchSummit 深圳 2017 成功举办,探索未来互联网架构
查看>>
不知道如何提升深度学习性能?我们为你整理了这份速查清单
查看>>
Go 2提上日程,官方团队呼吁社区给新特性提案提交反馈
查看>>
技术绩效考量:你们可能都做错了
查看>>
“亲切照料”下的领域驱动设计
查看>>
除了输入法,移动端AI还有哪些想象空间?
查看>>
回家路上想起来关于Js一个有趣的东西
查看>>
B端大数据应用的架构实践与思考
查看>>
2019 SRE 调查报告:事故处理是主要工作,SRE 压力山大
查看>>
React创建组件的三种方式及其区别
查看>>
大中型企业的天网:Apache Geode
查看>>
Windows Server已可安装Docker,Azure开始支持Mesosphere
查看>>
本地部署比SaaS更容易满足GDPR要求吗?
查看>>
WebAssembly Studio:Mozilla提供的WASM工具
查看>>
视频 - 在 VirtualBox 中部署 OpenStack
查看>>
2013-7-10学习笔记[字符串操作,指向函数的指针]
查看>>
企业如何用InfBox架设自己的内部即时信息IM服务器
查看>>