vuex

new Vuex.Store({

  state, // 状态

  getters, //

mutations,  // 突然变化了

actions, // 触发mutations

})

mutations

当执行程序时state突然发生变化成为mutations

mutation的第一个参数是网站的state

const mutations = {

  increment(state) { // 每个mutations方法里第一个参数都是state

    state.count++

  },

  decrement(state) {

    state.count--

  }

}

actions

actions引起副作用和异步操作的函数

actions可以包含任意异步操作

actions不改变state只进行commit到mutations

const actions = {

  increment: ({ commit }) => commit('increment'),

  decrement: ({ commt }) => commit('decrement'),

  incrementIfOdd({ commit, state }) {

    if ((state.count + 1) % 2 === 0) {

      commit('increment ')

    }

  },

  incrementAsync({

    commit

  }) {

    return new Promise((resolve, reject) => {

      setTimeout(() => {

        commit('increment')

        resolve()

      }, 1000)

    })

  }

}

getters

可以当做计算属性来写,所有的getter接受一个完整的state做第一个参数

const getters = {

  evenOrOdd: state => state.count % 2 === 0 ? '偶数' : '奇数'

}

模板里

 

   

   

点击: {{ $store.state.count }} 次数,此為 {{ evenOrOdd }}

+

-

业务设计:当 奇数时,才增加

业务设计:1秒后,才会增加 1

import { mapGetters, mapActions } from 'vuex' // 使用了mapGetters和mapActions

export default {

computed: mapGetters([ // 当做了计算属性来写,操作是在store.js里

'evenOrOdd'

]),

methods: mapActions([ // 执行actions, actions 中commit到mutations在store.js里

'increment',

'decrement',

'incrementIfOdd',

'incrementAsync'

])

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 安装 npm npm install vuex --save 在一个模块化的打包系统中,您必须显式地通过Vue.u...
    萧玄辞阅读 2,962评论 0 7
  • vuex 场景重现:一个用户在注册页面注册了手机号码,跳转到登录页面也想拿到这个手机号码,你可以通过vue的组件化...
    sunny519111阅读 8,034评论 4 111
  • Vuex是什么? Vuex 是一个专为 Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件...
    萧玄辞阅读 3,133评论 0 6
  • vuex 状态管理器 作为应用中所有组件的中央储存 只能以预定的方式去操作状态 把所有组件共享的状态抽取出来作为全...
    一只大椰子阅读 800评论 0 1
  • Vuex 的学习记录 资料参考网址Vuex中文官网Vuex项目结构示例 -- 购物车Vuex 通俗版教程Nuxt....
    流云012阅读 1,470评论 0 7