IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> [vuex] 快速了解vuex -> 正文阅读

[JavaScript知识库][vuex] 快速了解vuex

Vuex是什么?

官方文档是这样解释的:

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

vuex配置:

①创建store文件夹,在此文件夹下创建index.js文件

//index.js

import Vue from 'vue'
import Vuex from 'vuex'
 
Vue.use(Vuex)
 
export default new Vuex.Store({
  //数据,相当于data
  state: {
    
  },
  getters: {
    
  },
  //里面定义方法--操作state的方法
  mutations: {
    
  },
  // 操作异步操作mutation
  actions: {
    
  },
  modules: {
    
  }
})

②在main.js中引入store文件夹

import Vue from 'vue';
import App from './App.vue';
import store from './store';

Vue.config.productionTip = false;

new Vue({
    store,
    render: h => h(App)
}).$mount('#app')

vuex的安装详见官网,这里我就不做赘述了。下面我们来看看它的核心思想:State , Getter , Mutation , Action?以及?Module。

State:

作为一个“唯一数据源 (SSOT)”而存在。公共数据统一存放至store的state中。在state中定义的数据可以在任意组件中进行调用。

const store = new Vuex.Store({
    state: {
         age: 10
    }
});

使用时通过$store.state.age即可拿到想要获取到的数据。

Getter:

类似于computed,可以认为是store中的计算属性。可以在数据展示前对其进行处理。

getters: {
    addAge(state){
        return state.age + 1;
    }
}

通过$store.getters.addAge可获取getters中改变的数据。

Mutation:

vuex中为我们提供的唯一的修改仓库store中状态的方法,就是通过提交mutation,且必须是同步函数。

mutations:{
    increment(state,value){
        state.age += value;
    }
}

调用方法:

export default{
    methods: {
        addAge(value){
            this.$store.commit("increment",value)
        }
    }
}

Action:

用于提交mutation而不是直接改变状态,可以包含任意异步操作。只能通过action=>mutation=>state这个流程执行。

export default new Vuex.Store({
    state: {
        stu: {},
    },
    mutations: {
        getStu(state, Object) {
            state.stu = Object
        }
    },
    //2.接受dispatch传递过来的方法和参数
    actions: {
        getStuSync(store, Object) {
            setTimeout(() => {
                store.commit('getStu', Object);
            }, 1000)
        }
    }
})

调用方法:

export default{
    methods: {
        setStu(){
            let stu = {name: '张三',sex: '男',age: 18}
            this.$store.dispatch('getStuSync',stu);
        }
    }
}

Module:

见明知意,模块,分模块管理数据,每个模块都有各自的?statemutationactiongetter?甚至是嵌套子模块

①配置index.js

import Vue from 'vue'
import Vuex from 'vuex'
import state from './state'
import mutations from './mutations'
import actions from './actions'
import * as getters from './getters'

import moduleA from './module/moduleA' // 模块A
import moduleB from './module/moduleB' // 模块B

Vue.use(Vuex)

export default new Vuex.Store({
    actions,
    getters,
    state,
    mutations,
    modules: {
        moduleA,
        moduleB
    }
})

②moduleA.js

export default {
    state: {
        message: '模块A'
    },
    getters: {},
    mutations: {},
    actions: {}
}

③使用方法:

export default{
    data(){
        return{
            getMessage: ''
        }    
    },
    mounted: {
         this.message = this.$store.state.moduleA.message;
    }
}

?模块内部的 state 是局部的,只属于模块本身所有,外部必须通过对应的模块名进行访问。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:34:49  更:2022-08-06 10:36:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 -2025/4/22 15:21:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码