Vuex使用教程(直接上代码)
2023-09-11 14:16:33 时间
一.vuex简介
vuex是使用vue中必不可少的一部分,基于父子、兄弟组件,我们传值可能会很方便,但是如果是没有关联的组件之间要使用同一组数据,就显得很无能为力,那么vuex就很好的解决了我们这种问题,它相当于一个公共仓库,保存着所有组件都能共用的数据。 Vuex是单向数据流
二.vuex的使用
vue2中,要用vuex的3版本 npm i vuex@3
vue3中,要用vuex的4版本 npm i vuex@4
1.安装vuex依赖包 npm i vuex --save-dev
2.src文件夹下新建store,store文件夹里新建index.js,index.js 写以下代码
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
// 引入modules vuex模板
import cart from './modules/cart.js'
import path from './modules/path.js'
export default new Vuex.Store({
// 存放数据
state: {
str: '你好',
arr: ['a', 'b', 'c'],
num: 1,
},
// 计算属性
getters: {
changeArr(state) {
return state.arr.join('=')
}
},
// 存放方法的 同步操作
mutations: {
btn(state, chuan) {
console.log(state.str, chuan)
},
add(state) {
state.num++
}
},
// 提交mutations的 可以包含任意的异步操作
actions: {
changeAdd({ commit }) {
setTimeout(() => {
commit('add')
}, 500)
}
},
// 引入modules vuex模板
modules: {
cart,
path
},
})
3.需要用到数据的地方:
<template>
<div class="hello">
<h1>{{ str }}</h1>
<h1>{{ arr }}</h1>
<h1>{{ changeArr }}</h1>
<button @click="btn('传')">按钮</button>
<hr />
{{ num }}
<button @click="changeAdd">mutations同步增加</button>
</div>
</template>
<script>
import { mapState, mapGetters, mapMutations, mapActions } from "vuex";
export default {
name: "HelloWorld",
// computed有缓存
computed: {
...mapState(["str", "arr", "num"]),
...mapGetters(["changeArr"]),
},
methods: {
...mapMutations(["btn"]),
...mapActions(["changeAdd"]),
},
};
</script>
如果项目比较大,需要用到modules vuex模板
在store文件夹下新建modules文件夹,里面可以存放着:比如cart.js等
export default ({
state: {
cartList: "购物车管理"
},
getters: {},
mutations: {},
actions: {},
modules: {}
})
获取数据
<template>
<div class="hello">
{{cartList}}
{{pathList}}
</div>
</template>
<script>
import { mapState } from "vuex";
export default {
name: "HelloWorld",
computed: {
...mapState({
cartList:state=>state.cart.cartList,
pathList:state=>state.path.pathList,
})
},
};
</script>
注意:vuex本身不是持久化存储,如需持久化存储。
1.使用localStorage自己写
2.使用vuex持久化存储插件(本质也是用的localStorage)
使用插件:
1) 安装插件 npm install --save vuex-persist
2) 在index.js中加入
import VuexPersistence from 'vuex-persist'
const vuexLocal = new VuexPersistence({
storage: window.localStorage
})
在modules中添加
const store = new Vuex.Store({
state: { ... },
mutations: { ... },
actions: { ... },
plugins: [vuexLocal.plugin]
})
相关文章
- [Qt教程] 第13篇 2D绘图(三)绘制文字
- 小米1S MIUI V5刷回V4教程
- Git@OSC代码托管(含Git教程!important非命令行)
- Python视觉深度学习系列教程 第一卷 第10章 神经网络基础
- 用代码画流程图和时序图快餐教程(3) - PlantUML画时序图
- 【STM32H7的DSP教程】第39章 STM32H7的FIR带通滤波器实现(支持逐个数据的实时滤波)
- 【STM32H7教程】第54章 STM32H7的LTDC应用之LCD电阻触摸和电容触摸
- 【STM32H7教程】第28章 STM32H7时间关键代码在ITCM执行的超简单方法
- 【安富莱专题教程第4期】SEGGER的J-Scope波形上位机软件,HSS模式简单易用,无需额外资源,也不需要写目标板代码
- SAP UI5 应用开发教程之一百零四 - SAP UI5 表格控件的支持复选(Multi-Select)以及如何用代码一次选中多个表格行项目
- 用代码画流程图和时序图快餐教程(3) - PlantUML画时序图
- 用代码画流程图和时序图快餐教程(4) - mermaid时序图
- Atitit. 包厢记时系统 的说明,教程,维护,故障排查手册v2 pb25.doc
- SAP系统和微信集成的系列教程之八:100行代码在微信公众号里集成地图搜索功能
- SAP系统和微信集成的系列教程之二:如何通过微信公众号消费API
- 【微搭低代码】家校协同管理系统实战开发教程
- 腾讯云微搭低代码理发预约小程序实战教程
- 微搭低代码基础开发教程-编辑器介绍
- 腾讯云低代码开发实战教程-分类导航功能
- 腾讯云低代码实战开发教程-首页
- NLP之Chatgpt:基于openai框架通过调用API接口实现Chatgpt的吊炸天功能的图文教程(基于python代码实现)、案例应用之详细攻略
- QT教程4:基本窗口实现
- Matplotlib画图最全小白教程,代码+贴图保你看懂,都总结下来了,再无更全!
- Eclipse安装教程
- PHP代码为什么不能直接保存HTML文件——>PHP生成静态页面教程
- ExtJs自学教程(1):一切从API開始
- 加油站会员管理小程序实战开发教程08-低代码中调用模型方法
- 信息系统项目管理师教程读书笔记(五)
- 【云原生】centos7搭建安装k8s集群 v1.25版本详细教程实战