vuex4 极速入门到上手
vuex4 是 vue3的兼容版本,提供了和vuex3 的相同API。因此我们可以在 vue3 中复用之前已存在的 vuex 代码。
一、安装以及初始化
vuex4安装:
npm install vuex@next
为了向vue3初始化方式看齐,vuex4 初始化方式做了相应的变化,使用新的 createStore 函数创建新的 store 实例。
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import { createStore } from "vuex" const store = createStore({
state(){
return{
num:1,
}
}
}) const app = createApp(App)
app.use(router)
app.use(store)
app.mount('#app') //在组件内使用时与之前一样
<div>{{$store.state.num}}</div>
二、vuex4在组件内的使用
2.1、使用场景1
在组件的模板中直接使用,与之前的api保持一致
// 在 main.js 内
const store = createStore({
state(){
return{
num:1,
}
},
mutations:{
addNum(state){
state.num++
}
},
actions:{},
modules:{}
}) //组件内
<div>
{{$store.state.num}}
<button @click="$store.commit('addNum')">num自加</button>
</div>
2.2、使用场景2
通过 useStore 把store 引入组件内,然后操作 store 。
<template>
<div>
store组件
{{state.num}}
<button @click="add">num自加</button>
</div>
</template> <script>
import { useStore } from "vuex"
export default {
setup(){
const store = useStore()
return{
state:store.state,
add(){
store.commit('addNum')
}
}
}
}
</script>
2.3、使用场景3
store 内使用到多个值时,可以通过 toRefs 方法,将 store.state 内的数据直接展开。
<template>
<div>
{{num}}
<button @click="add">num自加</button>
</div>
</template> <script>
import { useStore } from 'vuex'
import { toRefs } from "vue"
export default {
setup(){
const store = useStore()
return{
...toRefs(store.state),
add(){
store.commit('addNum')
}
}
}
}
</script>
三、 getters 的用法
与之前的用法保持一致:
const store = createStore({
state(){
return{
num:1,
}
},
getters:{
doubleNum(state){
return state.num*2
}
},
}) //使用1:直接在template中使用
<template>
{{$store.getters.doubleNum}}
</template>
//使用2:利用计算属性获取
<template>
<div>
{{getDouble}}
</div>
</template>
<script>
import { useStore } from "vuex"
import { computed } from 'vue'
export default {
setup(){
const store = useStore()
return{
state:store.state,
getDouble:computed(()=>store.getters.doubleNum)
}
}
}
</script>
四、mutations 和 actions 的用法
调用 mutations 内的方法时,使用 commit 调用。上述的使用场景2 就是 mutations 方法的调用。
而 actions 异步更新 state 中的数据,还是需要经过 mutations 。
<template>
<div>
{{state.num}}
<button @click="asyncUpdateNum">更新num</button>
</div>
</template> <script>
import { useStore } from "vuex"
export default {
setup(){
const store = useStore()
return{
state:store.state,
asyncUpdateNum(){
store.dispatch('updateNum',88)
}
}
}
}
</script>
组件内可以通过 this.$store 属性访问store容器,使用 composition API 可以通过 useStore代替。其他的用法基本相同。
vuex4 极速入门到上手的更多相关文章
- 多本Python极速入门最佳书籍,不可错过的Python学习资料!
Python作为现在很热门的一门编程语言,介于Python的友好,许多的初学者都将其作为首选,为了帮助大家更好的学习Python,我筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. ...
- 60 分钟极速入门 PyTorch
2017 年初,Facebook 在机器学习和科学计算工具 Torch 的基础上,针对 Python 语言发布了一个全新的机器学习工具包 PyTorch. 因其在灵活性.易用性.速度方面的优秀表现,经 ...
- css3弹性盒模型flex快速入门与上手(align-content与align-items)
接着上文css3弹性盒模型flex快速入门与上手1继续,上文还剩下两个父容器的属性align-items和align-content. 一.align-content:多行的副轴对齐方式 含义 多行的 ...
- [转]Nginx基本功能极速入门
原文链接:Nginx基本功能极速入门 | 叉叉哥的BLOG 本文主要介绍一些Nginx的最基本功能以及简单配置,但不包括Nginx的安装部署以及实现原理.废话不多,直接开始. 1.静态HTTP服务器 ...
- 《Python黑客编程之极速入门》正式开课
玄魂 玄魂工作室 今天 之前开启了一个<Python黑客编程>的系列,后来中断了,内容当时设置的比较宽,不太适合入门.现在将其拆分成两个系列<Python黑客编程之极速入门>和 ...
- 1 小时 SQL 极速入门(三)——分析函数
1 小时 SQL 极速入门 前面两篇我们从 SQL 的最基础语法讲起,到表联结多表查询. 大家可以点击链接查看 1 小时 SQL 极速入门(一) 1 小时 SQL 极速入门(二) 今天我们讲一些在做报 ...
- Go 语言极速入门
本系列文章主要是记录<Go 语言实战>和<Google 资深工程师深度讲解 Go 语言>的学习笔记. Go 语言极速入门1 - 环境搭建与最简姿势Go 语言极速入门2 - 基础 ...
- Knative 初体验:CICD 极速入门
Knative 社区很早就在讨论用 Tekton 替换 Build 模块的相关事宜.Knative Build 官方已经正式说明不再建议使用 Knative Build 了. 如果你知道 Knativ ...
- ELKStack之极速入门(上)
ELKStack之极速入门(上) 链接:https://pan.baidu.com/s/1V2aYpB86ZzxL21Hf-AF1rA 提取码:7izv 复制这段内容后打开百度网盘手机App,操作更方 ...
随机推荐
- IDEA快捷键(未使用)
1.ctrl Ctrl + Y 删除光标所在行 或 删除选中的行 Ctrl + W 递进式选择代码块.可选中光标所在的单词或段落,连续按会在原有选中的基础上再扩展选中范围 Ctrl + E 显示最近打 ...
- Sentry 监控 - Alerts 告警
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- 手动实现 shared_ptr
面试写了一个基础的 scoped_ptr,被面试官要求写 shared_ptr,一时语塞.面试官不断提示我说在现有的基础上实现 shared_ptr 很简单,真的很简单,宛如在不断暗示我 1+1 就是 ...
- Angular 的性能优化
目录 序言 变更检查机制 性能优化原理 性能优化方案 小结 参考 序言 本文将谈一谈 Angular 的性能优化,并且主要介绍与运行时相关的优化.在谈如何优化之前,首先我们需要明确什么样的页面是存在性 ...
- [USACO10NOV]Buying Feed G
part 1 暴力 不难发现有一个 $\mathcal O(K^2n)$ 的基础 dp: $$f_{i,j+l}=\min(f_{i,j+l},f_{i-1,j}+(x_i-x_{i-1})jj+c_ ...
- Java到底怎么学?
你现在是不是想学Java,但很迷茫不知该从何下手,那么请认真看完这篇文章,希望对你有所帮助! 作为零基础刚刚接触Java的朋友们来说,我的建议还是先看视频,虽然有很多人说看视频学习慢,建议直接买优秀的 ...
- 洛谷4234最小差值生成树 (LCT维护生成树)
这也是一道LCT维护生成树的题. 那么我们还是按照套路,先对边进行排序,然后顺次加入. 不过和别的题有所不同的是: 在本题中,我们需要保证LCT中正好有\(n-1\)条边的时候,才能更新\(ans\) ...
- Python 3.10 正式发布,新增模式匹配,同事用了直呼真香!
关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 前几天,也就是 10 月 4 日,Python 发布了 3.10.0 版本,什么?3.9 之后居 ...
- Excel一对多查找
很多人在Excel中用函数公式做查询的时候,都必然会遇到的一个大问题,那就是一对多的查找/查询公式应该怎么写?大多数人都是从VLOOKUP.INDEX+MATCH中入门的,纵然你把全部的多条件查找方法 ...
- cookie和session和localStorage的区别
这三个都是保存在浏览器端,而且都是同源的. Session仅在当前浏览器窗口关闭有效,不能持久保存 Localstorage始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据 Cookie只在设置 ...