Vue Vuex的使用和原理 专门解决共享数据的问题

简介: Vue Vuex的使用和原理 专门解决共享数据的问题

Vuex专门解决共享数据的问题

多组件共享时使用,如用户ID各组件需要根据ID发送请求获取数据,任意组件可以进行增删改,相当于全局变量

Vuex 工作流程

如果确定值参数可以不经过Actions 直接走

安装Vuex

vue2使用 vuex@3
vue3使用 vuex@4

npm i vuex@3

要求

> 一个两个组件 要求两个组件实现 加法运算,保存到const state = { sum: 0 }当中

配置Vuex文件

在src下面创建store/index.js(官方文档的写法)

store/index.js

import Vue from 'vue'
import Vuex from 'vuex'
//导入Vuex
Vue.use(Vuex)
const actions = {
    addSum(context, value) {
        //context 上下文里面有commit函数 value 是组件传过来的值
        context.commit('AddSum', value)
        //获取到了数据 操作数据
    },
    //获取数据 如发起请求等
}
const mutations = {
    AddSum(state, value) {
        state.sum += value
        //这样就完成了赋值
    }
    //操作数据
}
const state = { sum: 0 }
//保存数据
//暴露出去给别人使用
export default new Vuex.Store({
    actions, mutations, state
})

然后在导入到main.js

import store from './store/index'
//如果不写文件名默认找index 如果没有报错
new Vue({
  render: h => h(App), store,
  //放到vue身上
}).$mount('#app')

组件1写入数据

<button @click="add">加</button>
add()
    { 
        this.$store.dispatch('addSum',1)
    }

组件2读取State数据

readData() { 
            console.log(this.$store.state.sum)
        }

如果没有什么业务逻辑可以不写dispatch直接 context.commit(‘AddSum’, value)


getters配置项 数据加工

类似于计算属性,如给计算器、结果*10 +10…等是一个配置项

const getters = {
    deal(state) { return state.sum * 10 }
    //让sum乘10
}
//暴露出去给别人使用
export default new Vuex.Store({
    actions, mutations, state, getters
})

获取数据

console.log(this.$store.getters.deal)
  //获取加工后的数据
相关文章
|
1天前
|
存储 JavaScript
Vue当前时间与接口返回时间的判断
Vue当前时间与接口返回时间的判断
6 0
|
1天前
|
JavaScript
vue生成动态表单
vue生成动态表单
6 0
|
1天前
|
JavaScript 前端开发
Vue生成Canvas二维码
Vue生成Canvas二维码
6 0
|
1天前
|
JavaScript
vue项目切换页面白屏的解决方案
vue项目切换页面白屏的解决方案
5 0
|
1天前
|
JavaScript 前端开发 开发者
new Vue() 发生了什么
new Vue() 发生了什么
8 1
|
1天前
|
JavaScript 容器
使用Vue写一个日期选择器
使用Vue写一个日期选择器
9 1
|
1天前
|
JavaScript
Vue 中如何模块化使用 Vuex
Vue 中如何模块化使用 Vuex
5 0
|
1天前
|
JavaScript 应用服务中间件 nginx
vue中404解决方法
vue中404解决方法
3 0
|
1天前
|
JavaScript 前端开发
vue中nextTick使用以及原理
vue中nextTick使用以及原理
5 0
|
1天前
|
JavaScript
vue实现多个el-form表单提交统一校验的2个方法
vue实现多个el-form表单提交统一校验的2个方法
5 0