1、解决多个组件共享同一状态数据问题
1)多个视图共享同一状态
2)来自不同视图的触发事件需要变更同一状态
文档API:https://vuex.vuejs.org/zh/api/

2、组件与store连接桥梁
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>',
  store // 所有的组件多了一个 $store属性
})
1)模板显示 $store.state.xxx
2)计算属性 this.$store.getters.yyy
3)触发事件 this.$store.dispatch('') 来调用actions中函数

actions:

1、存放触发事件函数的对象
2、通过执行commit('') 调用mutations中函数间接更新state
mutations:存放更新状态函数的对象
state: 存放状态的对象
getters: 存放计算属性函数的对象

1、store.js文件
import Vuex from 'vuex'
import Vue from 'vue'
Vue.use(Vuex)
const state = {
num: 0
}
const mutations = {
addNums: function (state) {
state.num++
},
releaseNums: function (state) {
state.num--
if (state.num < 0 ){
state.num = 0
}
}
}
const actions = {
addNum: function ({commit}) {
commit('addNums')
},
releaseNum: function ({commit}) {
commit('releaseNums')
}
}
const getters = {
reverseonum: function (state) {
return state.num * 2
}
}
export default new Vuex.Store({
state,
mutations,
actions,
getters
})
2、组件
<template>
<div>
<div>
<button @click="release">减少</button>
<input type="text" v-model="$store.state.num"/>
<button @click="add">增加</button>
</div>
<div>
{{ reversedMessage }}
</div>
</div>
</template>
<script>
export default {
computed: {
reversedMessage: function () {
return this.$store.getters.reverseonum
}
},
methods: {
add: function () {
this.$store.dispatch('addNum')
},
release: function () {
this.$store.dispatch('releaseNum')
}
}
}
</script>
【简化方式】
<template>
<div>
<div>
<button @click="releaseNum">减少</button>
<input type="text" v-model="num"/>
<button @click="addNum">增加</button>
</div>
<div>
{{ reverseonum }}
</div>
</div>
</template>
<script>
import { mapState, mapGetters, mapActions } from 'vuex'
export default {
computed: {
...mapState(['num']), //返回值{ num(){ return this.$store.state['num']}}
...mapGetters(['reverseonum'])
//返回值{ reverseonum(){ return this.$store.state['reverseonum']}}
//这里等同于 ...mapGetters({reversedMessage: 'reverseonum'}) ,所以上面只是前后方法名需相同
},
methods: {
...mapActions(['addNum', 'releaseNum'])
}
}
</script>

多组件共享-vuex的更多相关文章

  1. 多组件共享-vuex —— 使用vuex 报错 actions should be function or object with ”handler“

    vuex分模块使用时出现的问题,单文件暂时没有用到 原因是在action 文件中没有任何定义(即:文件为空)或则 action 没有任何方法返回,将action在模块引用时去掉即可 转自:https: ...

  2. 前端笔记之Vue(四)UI组件库&Vuex&虚拟服务器初识

    一.日历组件 new Date()的月份是从0开始的. 下面表达式是:2018年6月1日 new Date(2018, 5, 1); 下面表达式是:2018年5月1日 new Date(2018, 4 ...

  3. vue30-单一事件管理组件通信: vuex

    ------------------------------------------------------ 可以单一事件管理组件通信: vuex var Event=new Vue(); Event ...

  4. 使用mono-repo实现跨项目组件共享

    本文会分享一个我在实际工作中遇到的案例,从最开始的需求分析到项目搭建,以及最后落地的架构的整个过程.最终实现的效果是使用mono-repo实现了跨项目的组件共享.在本文中你可以看到: 从接到需求到深入 ...

  5. Vue学习之--------深入理解Vuex之多组件共享数据(2022/9/4)

    在上篇文章的基础上:Vue学习之--------深入理解Vuex之getters.mapState.mapGetters 1.在state中新增用户数组 2.新增Person.vue组件 提示:这里使 ...

  6. 父组件中vuex方法更新state,子组件不能及时更新并渲染的解决方法

    场景: 我实际用到的是这样的,我父组件引用子组件related,父组件调用获取页面详情的方法,更新了state值related,子组件根据该related来渲染相关新闻内容,但是页面打开的时候总是先加 ...

  7. 单一事件中心管理组件通信( vuex )

    有时候两个组件也需要通信(非父子关系).在简单的场景下,可以使用一个空的 Vue 实例作为中央事件总线: 补充$emit ,$on的讲解 代码: <!DOCTYPE html> <h ...

  8. day 87 Vue学习六之axios、vuex、脚手架中组件传值

      本节目录 一 axios的使用 二 vuex的使用 三 组件传值 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 axios的使用 Axios 是一个基于 promise 的 HT ...

  9. vue组件化开发-vuex状态管理库

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

随机推荐

  1. 冲刺周四The Fourth Day

    一.Fourth Day照片 二.项目分工 三.今日份燃尽图 四.项目进展 码云团队协同环境构建完毕 利用Leangoo制作任务分工及生成燃尽图 完成AES加解密部分代码 用代码实现对文件的新建.移动 ...

  2. Qt之zip压缩/解压缩(QuaZIP)

    摘要: 简述 QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库.适用于多种平台,利用它可以很方便的将单个或多个文件打包为zip文件,且打包后的zip文件可以通过其它 ...

  3. C# 防火墙操作之创建规则

    对于某些程序,我们只允许它使用某些特定端口.网络类型或者特定IP类型等信息.这时候,需要使用到防火墙里面的“高级设置”,创建某些特定的入站或者出栈规则,以规避其程序使用允许端口等意外的信息. 下面以创 ...

  4. mysql-c++连接

    1.mysql-c++连接MySQL :: Download Connector/C++ https://dev.mysql.com/downloads/connector/cpp/ 1-1VS201 ...

  5. 使用xshell连接Ubuntu虚拟机

    1.下载安装VMware软件,可以试用. 2.新建虚拟机,选择典型安装,这里安装Ubuntu16.04 LTS,注意选择网络连接时设置为 桥接模式,在“编辑”--“虚拟网络编辑器”中将DHCP 池中的 ...

  6. firefox的group群组功能很好!

    ================================ /usr/share/themes中有一些主题,包括: adwaita: 阿德维塔, 不二论 anaconda等等. 计算机环境: f ...

  7. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_8_LinkedHashMap集合

    linked

  8. 剑指offer--day04

    1.1题目:变态跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 1.2解题思路: 当n=1时,结果为1: 当n=2时,结果为2: ...

  9. [Python3] 009 字符串:给你们看看我的内置方法 第一弹

    目录 前言 如何查看 python3 中和 str 有关的方法 字符串方法 1. capitalize() 2. casefold() 3. center(width) 4. count(sub[, ...

  10. Java判断一个日期是否在下周日期区间

    Java实现判断一个日期是否在下周日期区间的方法 /** * 判断输入的日期是否在下周区间 * @return * @author nemowang */ public static boolean ...