安装vuex

cnpm install vuex@next --save
官网地址是 https://vuex.vuejs.org/zh/guide/#%E6%9C%80%E7%AE%80%E5%8D%95%E7%9A%84-store

vuex中的常用5个模块


vuex模块常见有这几个
1.state 存放数据的
2.getters 相当于计算属性
3.mutations 改变state的值(同步), 在页面中通过store.commit('updateMenus', '值') 触发 mutations中的方法。进而更改state中的数据
4.actions 异步操作,在页面中通过 store.dispatch('setTestName')来触发actions 中的方法。在actions中通过 commit('updateTestName', '我是张三')来修改state 中的值
5.modules 模块,内容较多的时候,可以进行模块的拆分
ps:改变state中的数据,无论是同步还是异步。只能够通过mutations 中的方法去更改。不可以直接通过srore.state这样的方式去更改。

简单使用vuex store/index.ts文件

在src下创建store文夹,在store文夹下创建index.ts.
import { createStore } from 'vuex' const store = createStore({
state() {
return {
// 通过存在localStorage中避免刷新的时候数据丢失
menus: localStorage.getItem('menus') ? localStorage.getItem('menu') : [],
testName: localStorage.getItem('testName') ? localStorage.getItem('testName') : '',
}
},
getters: {
// 计算属性
get_testName(state) {
return state.testName
}
},
mutations: {
updateMenus(state, menu) {
// @ts-ignore
localStorage.setItem('menus',JSON.stringify(menu))
state.menus=menu
},
updateTestName(state, testName) {
// @ts-ignore
localStorage.setItem('testName',testName)
state.testName=testName
}
},
actions: {
// 调用
setTestName({ commit }) {
return new Promise((resolve, reject) => {
// 模拟的一个请求,通过commit触发mutations中的 updateMenus
setTimeout(() => {
commit('updateTestName', '我是张三')
// 成功resolve返回数据
resolve('我是张三')
}, 1000);
})
}
},
modules:{}
}) export default store

在main.ts中注册

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import { initRouter } from './router/index'
import store from './store/index' //新增
let app=createApp(App)
initRouter(app)
app.mount('#app')
app.use(store) //新增

3种获取值的形式

<template>
<div>
后台首页
<p>第1种:方式获取store.state点的形式:姓名-{{ shwoName1 }}</p> <p>第2种:getters也没有跟新:姓名-{{ shwoName2 }}</p> <p>第3种:computed跟新:姓名-{{ shwoName3 }}</p> <el-button @click="handler">跟新了值</el-button>
</div>
</template> <script setup lang="ts">
import { computed } from '@vue/runtime-core'
import { useStore } from 'vuex'
let store = useStore()
// 第1种:store.state点的形式
let shwoName1 = store.state.testName // 第2种:getters也没有跟新
let shwoName2 = store.getters.get_testName // 第3种:computed跟新
let shwoName3 = computed(() => {
// return store.state.testName 或者如下
return store.getters.get_testName
}) const handler = () => {
store.dispatch('setTestName').then(res => {
console.log('返回来的值',res)
})
}
</script>

我推荐第三种方式computed去获取值

因为前面这两种只会执行一次。如果设置testName的值是一个异步操作。
肯定就获取不到最新的值了。

vuex4的简单使用的更多相关文章

  1. 【造轮子】打造一个简单的万能Excel读写工具

    大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...

  2. Fabio 安装和简单使用

    Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...

  3. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  4. 哪种缓存效果高?开源一个简单的缓存组件j2cache

    背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...

  5. 在Openfire上弄一个简单的推送系统

    推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这 ...

  6. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  7. 使用 Nodejs 搭建简单的Web服务器

    使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块. ...

  8. ASP.NET Aries 入门开发教程2:配置出一个简单的列表页面

    前言: 朋友们都期待我稳定地工作,但创业公司若要躺下,也非意念可控. 若人生注定了风雨飘摇,那就雨中前行了. 最机开始看聊新的工作机会,欢迎推荐,创业公司也可! 同时,趁着自由时间,抓紧把这系列教程给 ...

  9. 简单入门canvas - 通过刮奖效果来学习

    一 .前言 一直在做PC端的前端开发,从互联网到行业软件.最近发现移动端已经成为前端必备技能了,真是不能停止学习.HTML5新增的一些东西,canvas是用的比较多也比较复杂的一个,简单的入门了一下, ...

  10. 简单粗暴地理解js原型链--js面向对象编程

    原型链理解起来有点绕了,网上资料也是很多,每次晚上睡不着的时候总喜欢在网上找点原型链和闭包的文章看,效果极好. 不要纠结于那一堆术语了,那除了让你脑筋拧成麻花,真的不能帮你什么.简单粗暴点看原型链吧, ...

随机推荐

  1. 云小课 | DSC:快速识别敏感数据并脱敏

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 华为云数据安全中 ...

  2. 华山论“件”:Kafka、RabbitMQ、RocketMQ技能大比拼

    摘要:主流的消息中间件包含Kafka.RabbitMQ和RocketMQ,本期云图说为您介绍它们之前的差异. 本文分享自华为云社区<第234期 华山论"件"-Kafka.Ra ...

  3. 再获信通院权威认证,优等生华为云GaussDB数据库凭什么?

    摘要:在八大项测试中,华为云 GaussDB的两款数据库都以优异的成绩通过.那么这两款数据库究竟是凭借什么获此殊荣呢? 近期,中国信通院公布了第十三批数据库产品基础能力.性能和稳定性评审结果.在本次评 ...

  4.  iOS代码混淆-从入门到放弃

    ​ iOS代码混淆-从入门到放弃 目录 1. 什么是iOS代码混淆? 2. iOS自动代码混淆的方法是什么? 3. iOS代码混淆的作用是什么? 4. 怎么样才能做到更好的iOS代码混淆? 总结 参考 ...

  5. 漏洞评分高达9.8分!Text4Shell 会是下一个 Log4Shell吗?

    在过去的几天里,Apache Commons Text 库中一个名为 Text4Shell 的新漏洞引起很大的轰动,该漏洞存在于 Apache Commons Text 1.5到1.9版本中.此警报于 ...

  6. windows 系统关闭占用端口的应用

    开发中有时候开发工具把程序关闭了,但是后台并没有真正关闭程序,导致再次启动相同端口的程序时报端口已经被使用的错误,这时如何强制关闭已占用的端口 1.打开dos对话框 2.查找被占用的端口的进程号 ne ...

  7. <vue 基础知识 2、插值语法> v-once,v-html,v-text,v-pre,v-cloak

    代码结构 一.     Mustache 1.效果 展示如何将数据展示在页面上 2.代码 01-Mustache.html <!DOCTYPE html> <html lang=&q ...

  8. vue配置proxy实现跨域

  9. mongoose学习记录

    1 const mongoose = require('mongoose'); 2 3 mongoose.connect('mongodb://localhost/playground') 4 .th ...

  10. Ribbon 负载均衡源码解读

    转载请注明出处: 1.什么是Ribbon 是 Netflix 发布的一个负载均衡器,有助于控制 HTTP 和 TCP客户端行为.在 SpringCloud 中, nacos一般配合Ribbon进行使用 ...