美文网首页
vuex 基础结构

vuex 基础结构

作者: 赵兜兜zz | 来源:发表于2018-05-30 16:31 被阅读0次

state.js

与组件、项目、模块相关的底层数据

const state = {
  singer: {},
  playing: false,
  fullScreen: false,
  playlist: [],
  sequenceList: [],
  mode: playMode.sequence,
  currentIndex:-1


}
export default state

getters.js

对数据的映射,可以写一些复杂的判断逻辑

export const singer = state => state.singer

export const playing = state => state.playing

export const currentSong = (state) => {
  return state.playlist[state.currentIndex] || {}
}

mutations.js

定义对数据修改的逻辑

const mutations = {
  [types.SET_SINGER](state, singer){
    state.singer = singer
  },
  [types.SET_PLAYING_STATE](state, flag) {
    state.playing = flag
  },
  [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
  },
}

export default mutations

mutation-types.js

使用常量替代 mutation 事件类型

export const SET_SINGER = 'SET_SINGER'

export const SET_PLAYING_STATE = 'SET_PLAYING_STATE'

export const SET_PLAYLIST = 'SET_PLAYLIST'

export const SET_SEQUENCE_LIST = 'SET_SEQUENCE_LIST'

export const SET_CURRENT_INDEX = 'SET_CURRENT_INDEX'

action.js

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

export const selectPlay = function ({commit, state}, {list, index}) {
  commit(types.SET_SEQUENCE_LIST, list)
  commit(types.SET_PLAYLIST, list)
  commit(types.SET_CURRENT_INDEX, index)
  commit(types.SET_FULL_SCREEN, true)
  commit(types.SET_PLAYING_STATE, true)
}

调用action

import {mapActions} from 'vuex'

selectItem(item, index){
    this.selectPlay({
        list:this.songs,
        index
    })
},
...mapActions([
    'selectPlay'
])
mapGetters和mapMutations
import {mapGetters,mapMutations} from 'vuex'

  export default {
    computed: {
      ...mapGetters([
        'fullScreen',
        'playlist',
        'currentSong'
      ])
    },
    methods: {
      back(){
        this.setFullScreen(false)
      },
      open(){
        this.setFullScreen(true)
      },
      ...mapMutations({
        setFullScreen: 'SET_FULL_SCREEN'
      })
    }
  }

相关文章

  • vuex 基础结构

    state.js 与组件、项目、模块相关的底层数据 getters.js 对数据的映射,可以写一些复杂的判断逻辑 ...

  • vue进阶 - vuex安装及使用

    基础入门文档建议直接查看vuex中文文档vuex中文文档 我的理解:在 Vue.js 的项目中,如果项目结构简单,...

  • Vuex 的学习过程记录

    Vuex 的学习记录 资料参考网址Vuex中文官网Vuex项目结构示例 -- 购物车Vuex 通俗版教程Nuxt....

  • vuex结构

    vuex其实就是对全局状态的一个管理,即集中式存储和管理应用程序中所有组件的状态;vuex 的核心是store,s...

  • wepack从0开始配置vue环境之二: 线上部署配置优化

    wepack从0开始配置vue环境之一:基础配置webpack之三集成vuex和vue-Router 调整目录结构...

  • vuex

    如图是vuex的模块结构 使用vuex app.js触发模块action中的toggleSideBar方法: 用户...

  • Vuex(三) —— 纯手写一个超简单的Vuex

    目录 分析Vuex的功能 下载模板 分析模块结构 实现install函数 实现Store类 替换vuex 前面学了...

  • vue-vuex与react redux 比较

    vuex store的目录结构 模块结构 辅助映射函数 mapState, mapGetters, mapM...

  • vuex基础

    Vuex 是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有...

  • vuex 基础

    标签: vue [toc] 大纲: 什么时候用到vuex,简介vuex,举例子说明vuex的最佳实践;细节: ac...

网友评论

      本文标题:vuex 基础结构

      本文链接:https://www.haomeiwen.com/subject/uyfxsftx.html