zoukankan      html  css  js  c++  java
  • vuex简单整理

    • index.js:入口文件
    • state.js:存储状态。也就是变量。
    • getters.js:派生状态。也可以理解为set、get中的get。有两个可选参数,state、getters分别可以获取state中的变量和其它getters。和vue中的computed类似。
    • mutations.js:提交状态修改。可以理解为set、get中的set。每一个mutation都有一个字符串的事件类型和回调函数。第一个参数默认为state。vuex中唯一修改state的方式,不支持异步操作。和vue中的methods类似。
    • mutation-types.js:存储于mutations相关的字符串常量,方便检测和管理。
    • actions.js:和mutations类似。支持异步操作,也可以是对mutations的封装。

    Mutation: ADD_DB(state) { state.cartList.forEach(function(item) { item.num = 0; }); }, action sortNumStatus: ({ commit }) => { commit(types.ADD_DB); }, 通過action中的commit(xxx)方法觸發mutation中的xxx(state) {state.xxx = xxx} 來更改state中的數據 如何觸發action呢 ...mapActions([ 'sortNumStatus' ]), 或者直接 methods:{ this.$store.dispath('sortNumStatus',arr); } getters可以全局操作更改state中數據 getters: module.exports = { getInfos(state) { state.cartInfos.total_price = 0; state.cartInfos.total_nums = 0; return state.cartInfos; }, getCartList(state) { return state.cartList; } }; 調用getters中的全局的方法 computed:{ ...mapGetters([ 'xxxxx' ]) }

      总结: 

    1、应用层级的状态应该集中到单个 store 对象中,状态对象太复杂的时候可以划分module。

    2、提交 mutation 是更改状态的唯一方法。

    3、在触发方法上:

    action的触发是dispatch

    mutation的触发是commit;

    4、在功能上:

    state保存的是数据

    getters是对state进行二次加工

    action的处理函数的功能最终是commit mutation

    mutation处理函数的功能最终是改变state

    5、在同步异步上:

    异步逻辑都应该封装到 action 里面

    mutation 是同步的,不能出现异步

    6、在流程上:

    vue component—-dispatch—->actions—-commit—->mutations—-mutate—->state—-render—->vue component。从而形成闭环。见图:

    7、辅助方法的映射上:

    mapGetters、mapState 都是用在computed声明里面;

    mapActions、mapMutations则都是用在methods声明里面。

  • 相关阅读:
    idea 2017版破解
    UIRecorder 学习了解
    简单应用单例模式
    线程安全的单例模式(有参and无参)
    批量删除和批量修改(参数使用list)
    简单线程池开启线程
    随机数生成
    网络延迟-tc工具使用简单说明
    c++高级元编程 第一部分,第一节,第一小节
    Writing_Bug_Free_C_Code_Chapter_2_Know_Your_Environment
  • 原文地址:https://www.cnblogs.com/objectjj/p/11097114.html
Copyright © 2011-2022 走看看