vuex

1、

  • state,驱动应用的数据源;
  • view,以声明方式将 state 映射到视图;
  • actions,响应在 view 上的用户输入导致的状态变化。

    

Action 类似于 mutation,不同在于:

  • Action 提交的是 mutation,而不是直接变更状态。
  • Action 可以包含任意异步操作。
  •  mutation 必须是同步函数

2、使用vuex的配置

 下载vuex 

npm install vuex --save

 在src下创建一个新的文件夹store,在store下创建index.js,配置子模块的加载

import Vue from 'vue';
import Vuex from 'vuex';
import createLogger from 'vuex/dist/logger';

Vue.use(Vuex);

const modules = {};
storeModules.keys().forEach((k) => {
    const key = k.replace(/\.\/|\.js/g, '')
        .replace(/-+|\.+|_+/g, '-')
        .replace(/-([a-z])/g, (s1, s2) => {
            return s2.toUpperCase();
        });
    modules[key] = storeModules(k).default;
});

export default new Vuex.Store({
    modules: {
        // 基于文件名,生成store子模块名称
        ...modules,
    },
});

 在main.js引入store,并全局注册

import store from './store/index'


new Vue({
  el: '#app',
  store,
  components: { App },
  template: '<App/>'
})

 然后在store下创建modules文件,分模块管理数据,在state里面声明变量,mutations里更新数据,actions获取后台数据,如果需要对数据进行处理,可以在getters里面进行。

import axios from 'axios'
export default {
    namespaced: true,
    state() {
        return{
            list:[]  //定义变量
        } 
    },
    mutations:{
        updatList(state,data) {
            console.log(data);
            state.list = data;   //更新数据
        }
    },
    actions:{
        getListData(context) {
            axios.get('static/data/listData.json')
                .then((res) => {
                    console.log(res.data);
                    const result = res.data;
                    console.log(result);
                    context.commit('updatList', result);   //提交给mutations
                })
                .catch((err) => {
                });
        },
    }
};

在admin.vue 里引入

import{mapState,mapActions,mapGetters,mapMutations} from 'vuex';

export default {
  name: 'admin',
  data () {
    return {
  
    }
  },
 computed: {
    ...mapState('admin',['list']) //引入state里的变量,可以直接使用
  },
  methods: {

    ...mapMutations('admin',[
      'updatList'
    ]),
    ...mapActions('admin',[
      'getListData'
    ]),
  }
}

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值