zoukankan      html  css  js  c++  java
  • 我对vuex的浅见

    vuex:
        状态管理模式--->公共的数据仓库
    
      1、安装(需先安装vue)
        cnpm install vuex --save-dev
    
      2、创建仓库  创建一个store文件夹 store/index.js
    
        将vuex挂载在vue身上
    
        import Vue from "vue";
        import Vuex from "vuex";
        Vue.use(Vuex);
        const store= new Vuex.Store{}
        export default store
    
    
        3、store里面的状态不能够直接进行修改  而是必须通过mutations
    
        state:存放的是公共的状态  辅助函数  mapState   
          mapState的用法由3种
        1、computed: Vuex.mapState(["message","age"]),
        2、computed: {
              ...Vuex.mapState(["message"])
        },
        3、computed: {
            ...Vuex.mapState({
              msg:state=>state.message
            })
        },
    
        mutations:用来修改state里面的数据  当前对象下面所有的函数都会接受到2个参数 
        参数1;是state
        参数2:需要修改的值
    
          特点
            只能做同步操作 
            不能包含业务逻辑
            不能操作异步 
            用途主要用来修改数据
    
        辅助函数
          mapMutations:辅助函数
    
    
    
        actions:用来操作业务逻辑和异步操作
          调用actions的时候必须通过dispatch进行触发actions里面的方法
    
    
    
    
    
    
    
    edtion2
    
    初始化
    1、import  Vue from "vue";
    2、import Vuex from "vuex";
    Vue.use(Vuex);
    
    
    
    new Vue({
        el:
        Store
    })
    3、创建store
    
    const Store = new Vuex.Store({
    
    })
    
    new Vuex.Store:有很多个属性
        state  mutations  actions  getters  modules
    
    
    数据(状态)(属性)-----state--------------------------------computed中用
    
      this.$store.state.属性
    
    
      辅助函数:mapState
      1、引入vuex ,在computed里面将所需要的属性遍历出来
    
      computed:{
          (1)...Vuex.mapState(["属性","属性"])
          (2)...Vuex.mapState({
              key:state=>state.属性
          })
      }
    
    
      2、修改数据---mutations---------------------methods里用 
      只要数据需要发生改变那么就必须调用mutations里面的方法
    
      如果需要调用mutations里面的方法必须要用commit(参数1,参数2)
      参数1:函数名称
      参数2:需要传递的参数
    
    
      辅助函数:mapMutations()
      1、引入vuex ,在methods里面将所需要的方法遍历出来
    
      methods:{
          ...Vuex.mapMutations({
              key:"方法名"
          })
      }
    
    通过commit的方式来触发mutations里面的方法
    this.$store.commit(方法名称)
    
    
    3、actions:操作异步和业务逻辑--------------------------methods里用
        actions这个对象里面所有的方法都会由一个参数 (对象)----》commit.
        当actions里面的方法触发的时候 会调用commit这个方法来触发mutations里面的方法
    
    this.$store.dispatch("方法名称")
    
    
    4.getters---------------computed里用
    同computed,只不过computed是根据data里的值计算,
    而getters根据state值计算
     getters:计算属性  数据放在缓存   只要state里面的数据发生改变那么getter里面的方法就会被执行
    
        辅助函数
            mapGetters()
    辅助函数
     1、引入vuex ,在methods里面将所需要的方法遍历出来
    methods:{
        ...vuex.mapActions({
            key:"方法名"
        })
    }
    
     modules:模块   作用是将所以的数据进行模块的拆分 而不是放在一个store里面这样不方便管理
    
        注意在每个小模块导出的时候一定要去加命名空间 namespaced=true  这样就不会出现命名冲突
        如果想要调用小模块里面的方法  则需要加上小模块的名称
            例如
             handleAdd:"goodsStore/handleAdd"
    
    
    
    当组件操作状态的这时候->通过dispatch调用actions里面的方法(actions操作异步和业务逻辑)->actions里面的方法触发commit->commit执行后会触发mutations里面的方法
    用来做数据的修改,当数据修改完毕后,state发生改变  数据是双向绑定的,因此view层的数据也会发生改变
    

      

  • 相关阅读:
    Ubuntu18.04安装配置
    Ubuntu Terminal「控制台」
    Ubuntu16.04系统安装
    UEFI Install CentOS 7
    安装Ubuntu16.04后要做的事
    Ubuntu Google Chrome
    Nuke Linux Crack
    Selenium3自动化测试实战 基于Python语言
    函数基础
    Jenkins持续集成
  • 原文地址:https://www.cnblogs.com/FAB1E/p/10073147.html
Copyright © 2011-2022 走看看