Vue学习之Vuex的使用详解
目录
- 简介
- 优缺点
- 优点
- 缺点
- 使用场景
- 示例
- 安装Vuex并引入
- 1.安装vuex
- 2.编写vuex的store
- 3.main.js引入CounterStore.js
- 业务代码
- 测试
简介 说明
本文介绍Vue的插件:Vuex。包括:优缺点、使用场景、示例。
官网
官网文档
【Vue学习之Vuex的使用详解】API vuex-store
优缺点
优点
1.响应式
属于 vue 生态一环,,能够触发响应式的渲染页面更新。 (localStorage 就不会)
2.可预测的方式改变数据
避免数据污染
3.无需转换数据
JS 原生的数据对象写法(不需要做转换)。(localStorage 需要做转换)
缺点
1.复杂
适合大应用,不适合小型应用
2.不能持久化(刷新页面后vuex中的state会变为初始状态)
解决方案
结合localStorage
vuex-persistedstate插件
使用场景 当我们多个页面需要共享数据时就可以使用Vuex。
实际开发中我们一般在下面这种情况使用它:
当前登录用户的信息
购物车的信息
收藏的信息
用户的地理位置
示例 本处用计数器来测试:一个组件修改计数器的值,其余两个不相关组件可以监测到时计数器值的改变。
做法:一个组件(ComponentA)将数据共享给另外两个不相关组件(ComponentB和ComponentC),外部用Parent.vue放置这三个组件。
安装Vuex并引入
1.安装vuex
在工程目录下执行:npm install vuex
2.编写vuex的store
创建目录store,在其下边创建CounterStore.js,内容如下:
import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); const couterStore = new Vuex.Store({state: {count1: 0,count2: 0,},mutations: {increment1(state) {state.count1++; },decrement1(state) {state.count1--; },increment2: state => state.count2++,decrement2: state => state.count2--,}}); export default couterStore;
3.main.js引入CounterStore.js
// The Vue build version to load with the `import` command// (runtime-only or standalone) has been set in webpack.base.conf with an alias.import Vue from 'vue'import App from './App'import router from './router'import CouterStore from './store/CounterStore' Vue.config.productionTip = false /* eslint-disable no-new */new Vue({el: '#app',router,store: CouterStore,components: { App },template: ''})
按照JS语法,key与value重名时可以简写:(很多教程这么写)
// The Vue build version to load with the `import` command// (runtime-only or standalone) has been set in webpack.base.conf with an alias.import Vue from 'vue'import App from './App'import router from './router'import store from './store/CounterStore' Vue.config.productionTip = false /* eslint-disable no-new */new Vue({el: '#app',router,store,components: { App },template: ''})
业务代码 代码
ComponentA.vue
ComponentA
.container {margin: 20px; border: 2px solid blue; padding: 20px; }
ComponentB.vue
ComponentB
计数器的值:{{msg}} .container {margin: 20px; border: 2px solid blue; padding: 20px; }
ComponentC.vue
ComponentC
计数器的值:{{msg}} .container {margin: 20px; border: 2px solid blue; padding: 20px; }
Parent.vue
父组件
.outer {margin: 20px; border: 2px solid red; padding: 20px; }
路由
import Vue from 'vue'import Router from 'vue-router'import Parent from "../components/Parent"; Vue.use(Router) export default new Router({routes: [{path: '/parent',name: 'Parent',component: Parent,}],})
测试
访问: http://localhost:8080/#/parent
文章图片
到此这篇关于Vue学习之Vuex的使用详解的文章就介绍到这了,更多相关Vuex使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 详解VUE响应式原理
- 中间件|ZooKeeper学习笔记(八):服务器动态上下线原理
- vue-router 动态路由刷新页面空白或者404
- 设计模式学习笔记(二)工厂模式、模板模式和策略模式的混合使用
- [Qt学习笔记]Qt实现多摄像头的识别、显示、截图、分辨率帧率设置等功能
- C语言必学的数据结构|还在抱怨数据结构难? 一文带你搞懂如何AC算法题(2022版)
- Android|薪资倒挂(行业内卷?2022年最新Android学习路线整理分享,带你干倒世界卷王)
- Python进行多输出(多因变量)回归(集成学习梯度提升决策树GBR回归训练和预测可视化)
- Go语言学习|Go 1.18 系列篇(一)(如何升级 Go 1.18 ())
- java后台管理系统|java后台管理系统_基于 java的spring boot 和Vue ElementUI的在线考试后台管理系统