vuex使用modules模块化

1、main.js引入

复制代码
//引入vuex
import store from './store'
new Vue({
  el: '#app',
  router,
  store,
  components: { App },
  template: '<App/>',
  data:function(){
      return{
          wbWinList: []   // 定义的变量,全局参数
      }
  },
})

2、index.js

复制代码
import Vue from 'vue';
import Vuex from 'vuex';
import user from './modules/user'

Vue.use(Vuex);

const store = new Vuex.Store({
    state: {
        // 定义要传递的数据
        datas: [],
        id:1
    },
    getters: {
      doneTodos (state) {
        state.datas.push({"dade":666})
        return state.datas.length+8
      }
    },
    // 定义修改数据的 mutation
    mutations: {
        setData(state, newDatas) {
          state.id = newDatas;
        }
    },
    // 定义分发数据的 action,用于异步调用mutations
    actions: {
        updateDatas({ commit }, datas) {
          commit('setData', datas);
        }
    },
    // 模块化
    modules:{
      user
    }
});

// 全局使用
// console.log(this.$store.state)
// console.log(this.$store.state.user.id)

export default store;

2、user.js

复制代码
import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

const user = new Vuex.Store({
    state: {
        // 定义要传递的数据
        id:2
    },
    mutations: {
        // 定义修改数据的 mutation
        SET_DATAS(state, newDatas) {
          state.datas = newDatas;
        }
    },
    actions: {
        // 定义分发数据的 action
        updateDatas({ commit }, datas) {
          commit('SET_DATAS', datas);
        }
    }
});

export default user;

3、使用

复制代码
<template>
  <div @click="dadepp">
    {{dades}}
  </div>
</template>

<script>
  export default{
    data(){
      return {
        dades:6666
      }
    },
    methods:{
      dadepp(){
        // 调用getters
        console.log(this.$store.getters.doneTodos)
        console.log(this.$store.state)
        console.log(this.$store.state.user.id)
        // 调用mutations
        this.$store.commit("setData",10)
        console.log(this.$store.state)
        //调用actions
        this.$store.dispatch("updateDatas",20)
        console.log(this.$store.state)
      }
    }
  }
</script>

<style scoped>
  .dade{
    -webkit-box-shadow: 0 2px 0px 0 rgba(0,0,0,.1);
     box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
  }
  .draggable-div {
    position: absolute;
  }
</style>
相关推荐
前端进阶之旅1 分钟前
Next.js 16.3 新特性全解析 AI 驱动开发与 Instant Navigations 实战指南
开发语言·javascript·人工智能
Cobyte6 分钟前
编译解析器的基础——状态模式与状态机的原理
前端·javascript·vue.js
IT_陈寒28 分钟前
Vue的这个响应式陷阱,让我加班到凌晨三点
前端·人工智能·后端
2501_9160074733 分钟前
抓包工具对比 Charles、Fiddler、TraceEagle、Wireshark 与 Proxyman
前端·网络协议·ios·adb·https·fiddler·wireshark
小堂子这厢有礼了1 小时前
Chet.QuartzNet.UI v2.3.0 大更新!表格重构 + 系统配置 + 分析页全面升级!
前端·后端·ui·重构·c#·vue
触底反弹1 小时前
⚡ Promise.all 性能优化:让 Agent 的工具调用飞起来
javascript·人工智能·后端
程序员爱钓鱼1 小时前
Rust 控制流 if 详解:条件判断与 if 表达式
前端·后端·rust
心中有国也有家1 小时前
AtomGit Flutter 鸿蒙客户端:错误处理与优雅降级策略
android·javascript·flutter·华为·harmonyos
Listen·Rain2 小时前
Vue3中computed详解
前端·javascript·vue.js
kyle~2 小时前
Swagger ---基于 描述文件 生成 交互式API文档 的工具
前端·后端·规格说明书·说明文档