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 极速入门到上手相关推荐

  1. 60 分钟极速入门 PyTorch

    2017 年初,Facebook 在机器学习和科学计算工具 Torch 的基础上,针对 Python 语言发布了一个全新的机器学习工具包 PyTorch. 因其在灵活性.易用性.速度方面的优秀表现,经 ...

  2. Java极速入门系列:第一章Java概述、Java环境、IDEA开发工具

    Java极速入门-第一章Java概述.Java环境.IDEA开发工具 一.什么是Java 1.好的编程语言的特性 2.Java的特点 3.Java的运行机制 4.Java的三大体系 5.Java环境 ...

  3. 0基础极速入门!深度学习高层API最强官方课程

    近年来,随着深度学习技术的飞速发展,基于深度学习方法的前沿研究与应用实践在学术界与工业界大放异彩. 但是,对零基础的技术小白而言,深度学习并不是一个友好的领域.晦涩的理论.冗长的代码.复杂的调试.鱼龙 ...

  4. 直播提醒 | 零基础深度学习极速入门课程重磅开营

    点击左上方蓝字关注我们 今日,立春,一候东风解冻,二候蛰虫始振,三候鱼陟负冰.「深度学习7日打卡营_极速入门课程」将于今晚正式开营! 深度学习作为人工智能的热门方向,吸引了无数同学争相学习.但是深度学 ...

  5. Zephyr OS 开发极速入门

    Zephyr OS 开发极速入门 Zephyr OS简介 zephyr 开发环境搭建 更新软件源 安装依赖包 克隆zephyr代码仓库 安装必要的python3依赖工具 安装CMake 安装 zeph ...

  6. 自己的电脑上怎么用python3.7_python 3.7极速入门教程9最佳python中文工具书籍下载...

    筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. python现在的主流版本是3.7(有明显性能提升,强烈推荐) 3.6, 不基于这两个或者更新版本的书,慎重选择.很多库已经不提供py ...

  7. python基础教程 pdf github_Python极速入门的多本最佳书籍,不可错过的Python学习资料...

    Python作为现在很热门的一门编程语言,介于Python的友好,许多的初学者都将其作为首选,为了帮助大家更好的学习Python,我筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. p ...

  8. 慕课网_《RabbitMQ消息中间件极速入门与实战》学习总结

    慕课网<RabbitMQ消息中间件极速入门与实战>学习总结 时间:2018年09月05日星期三 说明:本文部分内容均来自慕课网.@慕课网:https://www.imooc.com 教学源 ...

  9. 九十分钟极速入门Linux——Linux Guide for Developments 学习笔记

    转载自: 九十分钟极速入门Linux--Linux Guide for Developments 学习笔记 http://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA ...

最新文章

  1. XCode提交app时提示SDK Version Issue,This app was built with the IOS 12.0 SDK...
  2. android--系统jar包引用
  3. 【Elasticsearch】改进布尔查询的搜索相关性
  4. CI Weekly #5 | 微服务架构下的持续部署与交付
  5. lightgbm algorithm case of kaggle(下)
  6. cloudera-agent启动File not found : /usr/sbin/cmf-agent解决办法(图文详解)
  7. 520送男朋友什么礼物最好、送男友礼物清单
  8. Solver Prototxt - 参数说明
  9. 计算机上的del键功能是什么,计算机上的DEL是什么?
  10. centos7中安装nginx步骤详解
  11. echarts 3d
  12. 2022-2028年全球与中国机身导线行业产销需求与投资预测分析
  13. 微信服务号前端页面开发总结
  14. 如何使用Google云端硬盘备份和还原WhatsApp消息
  15. 圣天诺LDK能做什么?
  16. 学了mysql用户权限我直接把管理员禁闭了
  17. 二维码制作(QRCode)
  18. 2021高考语文作文成绩查询,2021高考语文作文已出炉,撒贝宁押题太准了,你有想写的冲动吗...
  19. 蓝桥杯单片机比赛学习:9、PCF8591的基本原理和使用方法
  20. xml文件使用浏览器打开,提示“This page contains the following errors“解决办法

热门文章

  1. ggplot2 | R语言绘制世界地图choropleth
  2. JS 中 apos;helloapos; 和 new String(apos;helloapos;) 引出的问题
  3. 合理使用DTO(Data Transfer Object)
  4. 美年旅游_跟团游_编辑跟团游
  5. 软件构造第11次课复习——工厂模式
  6. Spring Cloud:熔断器Hystrix
  7. SPSS——方差分析(Analysis of Variance, ANOVA)——单因素方差分析
  8. 将pem证书转换为crt/key
  9. 宝塔上设置阿里云code的git管理
  10. 数字信号处理7——点到向量的距离