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

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

相关文章
|
传感器 数据可视化 关系型数据库
基于PostGIS的高级应用(3)--线性参考
一 线性参考干啥用的   如果直接写个“高大上”的定义结果往往是一脸懵逼的,也不知道为什么要定义这么一个概念。其实线性参考技术在我们生活中是非常常见的,比如打开高德,百度地图的App,查看实时路况,道路被不同路况的颜色动态分段显示了;高速中发生交通事故,电视广播中常常对地点描述为“距离xx高速入口xx公里处”,地图是能非常精确的定位到这个地点的。
2085 0
|
XML 开发工具 数据格式
Wix打包系列(一)如何使用wix制作安装程序
原文: Wix打包系列(一)如何使用wix制作安装程序     最近由于项目需要,需要给客户制作安装程序,一开始使用vs2005自带的打包工程来打包,但用了一段时间发现vs打包太死板,而且使用起来问题很多。
2392 0
|
JSON 前端开发 JavaScript
第三章 前端发起HTTP请求
第三章 前端发起HTTP请求
295 0
|
机器学习/深度学习 运维 监控
基于特征子空间的高维异常检测:一种高效且可解释的方法
本文探讨了一种替代传统单一检测器的方法,通过构建多个专注于特征子集(子空间)的检测器系统,来提高异常检测的准确性和效率。文章详细介绍了子空间方法在处理高维数据时的优势,包括缓解维度灾难、提高异常检测的可解释性和计算效率。同时,文中还讨论了子空间的选择策略,如基于领域知识、相关性、随机选择等,并介绍了PyOD工具包中实现子空间异常检测的具体方法。通过这些技术,异常检测系统能够更有效地识别数据中的异常记录,尤其是在特征数量众多的情况下。
661 9
基于特征子空间的高维异常检测:一种高效且可解释的方法
|
SQL 关系型数据库 MySQL
学生成绩管理系统(Python+数据库) 1
学生成绩管理系统(Python+数据库)
1564 0
|
机器学习/深度学习 人工智能 算法
利用机器学习进行股票市场预测
【6月更文挑战第9天】本文将探讨如何利用机器学习技术进行股票市场预测。我们将介绍一些常用的机器学习算法,如线性回归、支持向量机和神经网络,以及它们在股票市场预测中的应用。此外,我们还将讨论一些挑战和限制,以及未来可能的研究方向。
|
安全 Windows
Microsoft Windows远程桌面服务远程执行代码漏洞(CVE-2019-0708)
Microsoft Windows远程桌面服务远程执行代码漏洞(CVE-2019-0708)
562 0
|
安全 数据安全/隐私保护 Windows
Windows系统搭建VisualSVN实现公网访问本地服务
Windows系统搭建VisualSVN实现公网访问本地服务
515 0