锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. 前端
  4. 3-Vuex状态管理

3-Vuex状态管理

0
  • 前端
  • 发布于 2024-09-26
  • 12 次阅读
黄健
黄健

Vuex 是一个专门为Vue.js应用程序开发的状态管理模式。它集中管理应用程序中的所有组件的状态,并提供了一种可预测的方式来修改和查询状态。
Vuex的核心概念包括:

  1. State(状态):应用程序的状态存储在一个单一的对象中,称为state。在Vue组件中,可以通过this.$store.state来访问状态。
  2. Getters(计算属性):用于从状态中派生出一些衍生数据,类似于Vue组件中的计算属性。可以通过this.$store.getters来访问计算属性。
  3. Mutations(变更):用于修改状态的唯一方式。Mutations是同步的操作,通过提交一个mutation来修改状态,并且每个mutation都有一个对应的字符串类型的事件名和一个处理函数。
  4. Actions(动作):用于处理异步的操作,例如从服务器获取数据。Action提交一个mutation来间接修改状态。Actions可以包含任何异步操作,并且可以通过this.$store.dispatch来触发。
  5. Modules(模块):当应用程序变得复杂时,可以将state、getters、mutations和actions分割成模块。每个模块拥有自己的state、getters、mutations和actions。
    通过使用Vuex,我们可以更好地组织和管理应用程序的状态,实现组件之间的数据共享和通信,并且使状态变更的过程更加可追踪和可维护。

Vuex一般用来存储全局可访问的数据

步骤:
1.安装

npm install vuex@版本号

2.在一个文件夹下创建两个.js文件如 tab.js和index.js

//index.js
import Vue from 'vue'
import Vuex from 'vuex'
import tab from './tab'
Vue.use(Vuex)

//创建vuex的实例


export default new Vuex.Store({

    modules: {

        tab
    }
})


//tab.js
import Cookie from 'js-cookie'
export default {

    state: {

        isCollapse: false, //控制菜单展开或收起变量
        tabsList: [ //面包屑数据
            {

                path: '/',
                name: 'home',
                label: '首页',
                icon: 's-home',
                url: 'Home/Home'
            },
        ],
        //侧边框菜单数据
        menu: [],
    },
    mutations: {

        collapseMenu(state) {
    //控制菜单展开或收起方法
            state.isCollapse = !state.isCollapse
        },
        //更新面包屑数据
        selectMenu(state, val) {

            // console.log(val)
            //判断添加数据是否为首页
            if (val.name !== 'home') {

                const index = state.tabsList.findIndex(item => item.name === val.name)
                    //不存在
                if (index == -1) {

                    state.tabsList.push(val)
                }
            }
        },
        //删除指定的tag数据
        closeTag(state, item) {

            // console.log(item)
            const index = state.tabsList.findIndex(val => val.name === item.name)
            state.tabsList.splice(index, 1)
        },
        setMenu(state, val) {

            state.menu = val
            Cookie.set("menu", JSON.stringify(val))
        },
        //动态注册路由
        registerouter(state, router) {

            // 没有数据
            if (!Cookie.get("menu")) return
                //有数据
        }
    }
}

3.在main.js(或相应的入口文件)中,需要引入刚刚创建的store,并在创建Vue实例时传入

4.访问数据或方法
在你的Vue组件中,可以通过this. s t o r e . s t a t e 访问状态,如 t h i s . store.state访问状态,如this. store.state访问状态,如this.store.state.tab.isCollapse
this.$store.commit('setMenu',data.data.data)调用方法
但更推荐的做法是使用mapState、mapGetters、mapMutations和mapActions辅助函数来简化这些操作。

原文链接: https://blog.csdn.net/qq_53568730/article/details/138231945

标签: #Vuex 4 #前端 145
相关文章

vue2路由和vue3路由区别及原理 2024-10-08 11:24

一、Vue2 与 Vue3 路由的区别 1. 创建路由实例方式的不同 Vue 2 中,通过 Vue.use() 注册路由插件,并通过 new VueRouter() 来创建路由实例。 import Vue from 'vue';import VueRouter from 'vue-router';i

vue项目 部署到nginx 上刷新页面显示404 2024-09-30 17:34

在Vue项目部署到Nginx服务器上时,遇到刷新页面显示404的问题,通常是因为Nginx无法正确地处理Vue路由(尤其是单页面应用(SPA)中的前端路由)。Vue应用的路由是前端路由,依赖于JavaScript来动态解析URL,当直接访问除根路径外的URL时,Nginx默认会尝试在服务器上找到对应

三小时快速上手TypeScript,TS速通教程(上篇、中篇、下篇、附加篇) 2024-09-29 11:21

TypeScript速通 Typescript简介 为什么需要TypeScript * JavaScript今非昔比 JavaScript中的困扰 1. 不清不楚的数据类型 2. 有漏洞的逻辑 3. 访问不存在的属性 4. 低级的拼写错误 TypeScrip

js中的事件冒泡是什么? 2024-09-29 11:21

事件冒泡(Event Bubbling)是JavaScript中一种事件传播机制。当一个事件(如点击、键盘输入等)发生在某个元素上时,浏览器会首先触发该元素上的特定事件处理函数(如果存在的话)。然后,该事件会从当前元素向其父元素逐级传播,直到达到元素或整个文档树。这种从触发元素开始,逐级向上传播的事

Vue.js 的 Mixins 2024-09-26 17:57

Vue.js 的 Mixins 是一种非常强大且灵活的功能,它允许你封装可复用的 Vue 组件选项。Mixins 实际上是一种分发 Vue 组件可复用功能的非常灵活的方式。一个 mixin 对象可以包含任意组件选项。当组件使用 mixin 时,所有 mixin 选项将被"混入"该组件本身的选项。 M

前端框架对比和选择 2024-09-26 17:57

在前端开发的广阔领域中,框架的选择对于项目的成功至关重要。不同的框架各具特色,适用于不同的开发需求和项目规模。本文将对当前最流行的三大前端框架——React、Vue和Angular进行详细对比,并探讨如何根据项目需求选择合适的框架。 一、React 1. 简介 React是由Facebook开发和维

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.