首页 > 其他分享 >vuex4的简单使用

vuex4的简单使用

时间:2022-09-25 15:36:04浏览次数:57  
标签:import 简单 testName state localStorage 使用 vuex4 vuex store

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

标签:import,简单,testName,state,localStorage,使用,vuex4,vuex,store
From: https://www.cnblogs.com/IwishIcould/p/16727826.html

相关文章

  • 五、pycharm的安装与基本使用
    目录一、pycharm的安装1、软件介绍2、正版安装1.下载软件2.安装软件3、其他方法安装(需要先下载相关资源)①无限试用法②傻瓜式激活法③淘宝购买二、pycharm软件的使用1.创建......
  • git rebase 使用
    1.GITREBASE使用说明gitrebase作用将提交进行合并有些时候,我们在开发的时候,可能在本地做了几次提交,但是这个提交是解决一个问题的,这个时候如果我们向远程推送的时......
  • 【Linux】有名管道实现进程间通信——一个简单聊天程序
    有名管道实现简单聊天程序1."你来我往"式简单聊天函数功能:简单聊天程序,两个程序a和b,a向b发送信息,b接收信息,b向a发送信息,a接收信息;...源码参考:chatA.c#include<std......
  • 八、简单树形结构
    树是啥?不就是树吗?实际上,我们今天所说的树,是一种数据结构。它叫做树形结构,实际上长这样:树今天的概念比较多,也很繁杂,大家看看就行,没必要完全记住,只要知道大概的意思......
  • 超级鹰的使用
    超级鹰主要作用在我们利用selenium实现自动登录页面时往往会遇到图片类型的验证码,而超级鹰的作用就是识别验证码返回给我们,下面看下具体的实现。1.https://www.chaojiyin......
  • PS新手教程-如何使用ps将图片制成乐高像素拼图
    如何使用ps将图片制成乐高像素拼图?给大家介绍如何使用ps将图片制成乐高像素拼图,一起来看看吧。PS新手教程-如何使用ps将图片制成乐高像素拼图图片制成乐高像素拼图效果如......
  • 使用 NMF 进行投诉分类
    使用NMF进行投诉分类使用非负矩阵分解的主题建模在这里,我们将在这种技术的帮助下使用NMF(非负矩阵分解),这是一种主题建模方法,我们将检测每张票中出现的模式和重复出现的......
  • 使用 Azure 数据资源管理器(Azure Synapse Analytics 的一部分)的 SecOps 分析平台架构
    使用Azure数据资源管理器(AzureSynapseAnalytics的一部分)的SecOps分析平台架构构建您自己的安全分析平台用例鉴于网络安全对所有组织来说都是一个大问题,我们需要......
  • PowerDesigner 的使用
    教程:https://www.bilibili.com/video/BV1iq4y1u7vj/?p=158 笔记:PowerDesigner使用——有两种常用的模型“概念模型”与物理模型,且相互间可转换。都需要设置实体......
  • 我在 Flutter 应用中使用 Bloc 的方式
    我在Flutter应用中使用Bloc的方式Flutter世界中的每个人(几乎)都知道集团状态管理库。但并不是每个人都知道何时(或如何)使用它。我也是。这篇文章只是我对事物的看......