当前位置: 首页 > news >正文

第四十一章 Vue之初识VueX

目录

一、引言

1.1. vuex的概念

1.2. vuex使用场景

1.3. 优势

二、创建演示项目

2.1. 构建项目步骤

2.2. 项目最终生成结构

2.3. 创建项目文件

2.3.1. App.vue 

2.3.2. Son1.vue

2.3.3. Son2.vue

三、创建一个空仓库

3.1. 安装vuex

3.2. 新建仓库

3.3. 挂载仓库

3.4. 完整代码

3.4.1. main.js

3.4.2. index.js

四、提供/访问vuex数据

4.1. 提供数据

4.2. 使用数据

4.2.1. 通过 store 直接访问

4.2.2. 通过辅助函数 (简化)


一、引言

1.1. vuex的概念

vuex 是一个 vue 的 状态管理工具,在我们的开发过程中,状态本质上就是数据。vuex 相当于是一个插件,可以帮我们管理 vue 通用的数据 (多组件共享的数据)。

1.2. vuex使用场景

① 某个状态在很多个组件中使用 (如个人信息)

② 多个组件共同维护一份数据 (购物车)

1.3. 优势

① 共同维护一份数据,数据集中化管理。

② 支持响应式变化

③ 操作简洁 (vuex提供了一些辅助函数)

二、创建演示项目

基于VueCli脚手架,构建一个vuex[多组件数据共享]的演示案例项目,该项目的演示效果是三个组件, 共享一份数据:

1. 任意一个组件都可以修改数据

2. 三个组件的数据是同步的

2.1. 构建项目步骤

 

 

2.2. 项目最终生成结构

2.3. 创建项目文件

2.3.1. App.vue 

<template><div id="app"><h1>根组件</h1><input type="text"><Son1></Son1><hr><Son2></Son2></div>
</template><script>
import Son1 from './components/Son1.vue'
import Son2 from './components/Son2.vue'
export default {name: 'app',data () {return {}},components: {Son1,Son2}
}
</script><style></style>

2.3.2. Son1.vue

<template><div class="box"><h2>Son1 子组件</h2>从vuex中获取的值:<label></label><br><button>值 + 1</button></div>
</template><script>
export default {name: 'Son1Com'
}
</script><style lang="css" scoped>
.box {border: 3px solid #ccc;width: 400px;padding: 10px;margin: 20px;
}
h2 {margin-top: 10px;
}
</style>

2.3.3. Son2.vue

<template><div class="box"><h2>Son2 子组件</h2>从vuex中获取的值:<label></label><br><button>值 - 1</button></div></template><script>
export default {name: 'Son2Com'
}
</script><style lang="css" scoped>
.box {border: 3px solid #ccc;width: 400px;padding: 10px;margin: 20px;
}
h2 {margin-top: 10px;
}
</style>

三、创建一个空仓库

注:版本vue2安装的vuex版本为3,版本vue3安装的vuex版本为4

3.1. 安装vuex

yarn add vuex@3

3.2. 新建仓库

创建 store/index.js 专门存放 vuex

配置使用vuex Vue.use(Vuex)

创建仓库 new Vuex.Store()

3.3. 挂载仓库

main.js 中导入挂载到 Vue 实例上

3.4. 完整代码

3.4.1. main.js

import Vue from 'vue'
import App from './App.vue'
import store from '@/store/index'Vue.config.productionTip = falsenew Vue({render: h => h(App),store
}).$mount('#app')

3.4.2. index.js

// 存放的是vuex相关的核心代码
import Vue from 'vue'
import Vuex from 'vuex'// 配置插件给Vue使用
Vue.use(Vuex)// 创建仓库(空仓库)
const store = new Vuex.Store()// 导出给main.js使用
export default store

四、提供/访问vuex数据

4.1. 提供数据

State 提供唯一的公共数据源,所有共享的数据都要统一放到 Store 中的 State 中存储。

在 state 对象中可以添加我们要共享的数据。

4.2. 使用数据

4.2.1. 通过 store 直接访问

 

4.2.2. 通过辅助函数 (简化)

mapState是辅助函数,帮助我们把 store中的数据 自动 映射到 组件的计算属性中,其功能如同下列代码:

import { mapState } from 'vuex'  

mapState(['count'])

computed: {

...mapState(['count'])

}

标准使用方法:

 

http://www.lryc.cn/news/482306.html

相关文章:

  • GIT的基本使用与进阶
  • 【Linux系统】—— 基本指令(二)
  • MFC工控项目实例三十实现一个简单的流程
  • 【Android、IOS、Flutter、鸿蒙、ReactNative 】文本点击事件
  • json转excel,读取json文件写入到excel中【rust语言】
  • Java面试要点06 - static关键字、静态属性与静态方法
  • 动态规划-背包问题——416.分割等和子集
  • Pr:视频过渡快速参考(合集 · 2025版)
  • 网络安全---安全见闻2
  • 解决因为TortoiseSVN未安装cmmand line client tools组件,导致idea无法使用svn更新、提交代码
  • Ubuntu 20.04安装CUDA 11.0、cuDNN 8.0.5
  • 鸿蒙 APP 发布上架
  • 【C++笔记】C++三大特性之继承
  • 如何在CentOS 7上搭建SMB服务
  • linux详解,基本网络枚举
  • 5G智能对讲终端|北斗有源终端|北斗手持机|单兵|单北斗
  • 第七部分:2. STM32之ADC实验--AD多通道(AD采集三路传感器模块实验:光敏传感器、热敏传感器、反射式传感器附赠温湿度传感器教程)
  • js.零钱兑换
  • GitHub 上的开源项目推荐
  • 实现Reactor反应堆模型:框架搭建
  • UE5 样条线组件(未完待续)
  • 计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
  • sql速度优化多条合并为一条语句
  • 用 PHP或Python加密字符串,用iOS解密
  • docker容器启动报错error creating overlay mount to /var/lib/docker/overlay2解决办法
  • 人工智能在智能家居中的应用
  • MySQL数据库备份与恢复:全面深入指南
  • 前端请求后端php接口跨域 cors问题
  • 【软件工程】ATAM架构权衡评估方法
  • MFC 重写了listControl类(类名为A),并把双击事件的处理函数定义在A中,主窗口如何接收表格是否被双击