vuex4的简单使用

简介: vuex4的简单使用

安装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的值是一个异步操作。
肯定就获取不到最新的值了。

遇见问题,这是你成长的机会,如果你能够解决,这就是收获。

相关文章
|
JavaScript
js 事件流、事件冒泡、事件捕获、阻止事件的传播
js 事件流、事件冒泡、事件捕获、阻止事件的传播
272 1
|
存储 DataWorks 数据挖掘
DataWorks产品使用合集之标准代码如何导入模板下载
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
366 0
|
3天前
|
存储 JavaScript 前端开发
JavaScript基础
本节讲解JavaScript基础核心知识:涵盖值类型与引用类型区别、typeof检测类型及局限性、===与==差异及应用场景、内置函数与对象、原型链五规则、属性查找机制、instanceof原理,以及this指向和箭头函数中this的绑定时机。重点突出类型判断、原型继承与this机制,助力深入理解JS面向对象机制。(238字)
|
2天前
|
云安全 人工智能 安全
阿里云2026云上安全健康体检正式开启
新年启程,来为云上环境做一次“深度体检”
1474 6
|
4天前
|
安全 数据可视化 网络安全
安全无小事|阿里云先知众测,为企业筑牢防线
专为企业打造的漏洞信息收集平台
1310 2
|
3天前
|
缓存 算法 关系型数据库
深入浅出分布式 ID 生成方案:从原理到业界主流实现
本文深入探讨分布式ID的生成原理与主流解决方案,解析百度UidGenerator、滴滴TinyID及美团Leaf的核心设计,涵盖Snowflake算法、号段模式与双Buffer优化,助你掌握高并发下全局唯一ID的实现精髓。
324 160
|
3天前
|
人工智能 自然语言处理 API
n8n:流程自动化、智能化利器
流程自动化助你在重复的业务流程中节省时间,可通过自然语言直接创建工作流啦。
372 4
n8n:流程自动化、智能化利器
|
12天前
|
机器学习/深度学习 安全 API
MAI-UI 开源:通用 GUI 智能体基座登顶 SOTA!
MAI-UI是通义实验室推出的全尺寸GUI智能体基座模型,原生集成用户交互、MCP工具调用与端云协同能力。支持跨App操作、模糊语义理解与主动提问澄清,通过大规模在线强化学习实现复杂任务自动化,在出行、办公等高频场景中表现卓越,已登顶ScreenSpot-Pro、MobileWorld等多项SOTA评测。
1492 7
|
5天前
|
人工智能 API 开发工具
Skills比MCP更重要?更省钱的多!Python大佬这观点老金测了一周终于懂了
加我进AI学习群,公众号右下角“联系方式”。文末有老金开源知识库·全免费。本文详解Claude Skills为何比MCP更轻量高效:极简配置、按需加载、省90% token,适合多数场景。MCP仍适用于复杂集成,但日常任务首选Skills。推荐先用SKILL.md解决,再考虑协议。附实测对比与配置建议,助你提升效率,节省精力。关注老金,一起玩转AI工具。
|
2天前
|
Linux 数据库
Linux 环境 Polardb-X 数据库 单机版 rpm 包 安装教程
本文介绍在CentOS 7.9环境下安装PolarDB-X单机版数据库的完整流程,涵盖系统环境准备、本地Yum源配置、RPM包安装、用户与目录初始化、依赖库解决、数据库启动及客户端连接等步骤,助您快速部署运行PolarDB-X。
230 1
Linux 环境 Polardb-X 数据库 单机版 rpm 包 安装教程