• vuex-counter计数器


    安装:npm install vuex --save

    1,创建 store 对象--提供一个初始 state对象和一些 mutation

    store.js

    import Vue from 'vue'
    import Vuex from 'vuex'
    
    Vue.use(Vuex)
    
    //指定初始化数据
    const state = { 
        count: 0
    }
    
    //mutations:对象,包含了n个直接更新状态的方法
    const mutations = {
       ADD(state){
           state.count++;
       },
       CUT(state){
           state.count--;
       }
    }
    
    //actions:对象,包含了n个间接更新状态的方法
    const actions = {
        add({commit}) {
            commit('ADD') //提交一个mutation请求
        },
        cut({commit}) {
            commit('CUT')
        },
        addIfOdd({commit,state}) {
            if (state.count % 2 != 0) {
                commit('ADD')
            }
        },
        addAsynce({commit},state) {
            setTimeout(()=>{
                commit('ADD')
            },1000)
        }
    }
    
    //getters:对象,包含多个getter计算属性
    const getters = {
        evenOrOdd(state){ //当读取属性值时自动调用并返回属性值
            return state.count%2==0?'偶数':'奇数'
        }
    }
    
    export default new Vuex.Store({
        state,
        mutations,
        actions,
        getters
    })

    ① state

    提供一个初始 state对象

    ② mutations

    每个mutation 都有一个字符串的 事件类型 和一个回调函数,这个回调函数就是我们实际进行状态更改的地方,并且它会接收一个 state 作为第一个参数。

    当触发一个类型为 ADD 的 mutation 时(相应的 type 调用 store.comiit 方法),调用 ADD mutataion 的回调函数

    ③ actions

     actions: {
        increment (context) {
          context.commit('increment')
        }
      }

    action 函数接收一个与 store 实例具有相同方法和属性的 context 对象,因此可以调用 context.commit 提交一个 mutation。

    实践中,经常用到 ES2015 的参数解构来简化代码(特别是需要多次调用 commit  的时候)

    actions: {
      increment ({ commit }) {
        commit('increment')
      }
    }

    ④ getters

    vuex 允许在 store 中定义 'getter',可以认为是 store 的计算属性,就像计算属性一样,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。

    getter 接收 state 作为第一个参数。

    2,在 Counter 组件中通过 store 对象读取数据

    首先在入口文件 main.js 中注册 vuex 的 store

    直接通过 state 和 getters 读取数据

    通过 store.dispacth 方法 分发 action

    完成 counter 计数器,在vuex 中可以监视 state 变更情况

    辅助函数 maState ,mapGetters,mapActions

    mapSate 辅助函数:mapState 函数返回的是一个对象,要将它与局部计算属性混合使用,可以使用对象展开运算符,要求映射的计算属性的名称与 state 的子节点名称相同,将 state 混入 computed 对象中

    mapGetters 辅助函数:将 store 中的 getter 映射到局部计算属性,使用对象展开运算符将 getter 混入 computed 对象中

    mapActions:将组件的 methods 映射为 store.dispatch 调用

  • 相关阅读:
    TCP 传递信息
    如何在数据源是空的时候,gridview显示表头(万能)
    (orm1)O/R Mapping在实际中用于什么方面最有优势?[转]
    web service 数据传输有什么限制? 为什么?DataTable可以作为web service参数传递么?90
    C#对象的 Xml序列化与反序列化
    题目:当点击按钮时,如何实现两个td的值互换?【js】
    4.如何获取动态生成的SL控件的NAME值(二)
    gridview排序加箭头(二)
    我们没有在一起
    (orm 2) LINQ与ORM
  • 原文地址:https://www.cnblogs.com/shanlu0000/p/13476832.html
Copyright © 2020-2023  润新知