Vuex基础使用存取值+异步请求

简介: Vuex基础使用存取值+异步请求

一.Vuex简介

vuex是什么?

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。



什么情况使用 Vuex?


Vuex 可以帮助我们管理共享状态,并附带了更多的概念和框架。这需要对短期和长期效益进行权衡。


如果您不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的。确实是如此——如果您的应用够简单,您最好不要使用 Vuex。一个简单的 store 模式就足够您所需了。但是,如果您需要构建一个中大型单页应用,您很可能会考虑如何更好地在组件外部管理状态,Vuex 将会成为自然而然的选择。


vuex使用场景:


当一个组件需要多次派发事件时。例如购物车数量加减。

跨组件共享数据、跨页面共享数据。例如订单状态更新。

需要持久化的数据。例如登录后用户的信息。

当您需要开发中大型应用,适合复杂的多模块多页面的数据交互,考虑如何更好地在组件外部管理状态时

vuex 的五个核心概念


  • State 定义状态(变量)
  • Getter 获取状态(变量的值)
  • Mutation 修改状态(修改变量的值)
  • Action 触发 mutation 函数,从而修改状态
  • Module 当状态很多时,把状态分开来管理

二、Vuex使用

2.1 Vuex安装

注意: node.js运行环境



1、node.js版本10输入下指令进行安装

npm install vuex

2、node.js版本18请执行下指令

npm i -S vuex@3.6.2

下载执行命令:


安装完成出现以下配置说明成功

创建store(仓库)模块



三、使用Vuex获取、修改值案例

在项目中创建store目录




state.js:

export default{
  eduName:'ar.小白',
  aname:'',
  bname:''
}

mutations.js:

export default {
  setEduName: (state, payload) => {
    state.eduName = payload.eduName;
  }
}


getters.js:

export default {
  getEduName: (state) => {
    return state.eduname;
  }
}


actions.js 先不写代码。

index.js:

import Vue from 'vue'
import Vuex from 'vuex'
import state from './state'
import getters from './getters'
import actions from './actions'
import mutations from './mutations'
Vue.use(Vuex)
const store = new Vuex.Store({
     state,
     getters,
     actions,
     mutations
 })
 export default store


3.2 引用

在src中的main.js进行引用,如下:

import store from './store'
/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,
  data(){
    return{
      Bus:new Vue()
    }
  },
  components: { App },
  template: '<App/>'
})


3.1 创建两个菜单组件

page1:

<template>
    <div>
        <h1>page1</h1>
        <p>请输入您要修改的值</p>
    <input type="text" v-model="msg">
    <button @click="changed">修改参数值</button>
    <button @click="getData">获取参数值</button>
    </div>
  </template>
  <script>
  export default {
    data () {
      return {
        msg: 'page1'
      }
    },
    methods:{
      changed(){
        this.$store.commit('setName',{Name:this.msg})
      },
      getData(){
        let name = this.$store.getters.getName;
        alert(name);
      }
}
  }
  </script>
  <style>
  </style>

page2:

<template>
    <div>
        <h1>page2</h1>
        {{change}}
    </div>
  </template>
  <script>
  export default {
    data () {
      return {
        msg: 'page2'
      }
    },
    computed:{
      change(){
        return this.$store.getters.getName;
      }
    }
  }
  </script>
  <style>
  </style>


到项目中src的router的index.js文件中配置路径,如下:

1. import page1 from '@/Views/vuex/page1'
2. import page2 from '@/Views/vuex/page2
{
        path: '/vuex/page1',
        name: 'page1',
        component: page1
      },
      {
        path: '/vuex/page2',
        name: 'page2',
        component: page2
      }

模拟菜单数据

 <!-- 模拟数据 -->
<el-submenu key="key_999" index="index_999">
      <template slot="title">
        <span slot="title">Vuex管理</span>
      </template>
      <el-menu-item key="key_99901" index="/vuex/page1">
        <span>page1</span>
      </el-menu-item>
      <el-menu-item key="key_99902" index="/vuex/page2">
        <span>page2</span>
      </el-menu-item>
    </el-submenu>
  </el-menu>

效果展示:


四.Vuex的同步异步


解释:


同步操作:

同步操作是指立即执行并修改应用程序状态的操作。在 Vuex 中,这通常通过 mutations 来实现。Mutations 是用于修改状态的函数,它们必须是同步的,这意味着它们不应该包含异步代码。当你需要在应用程序中执行一些立即生效的状态变更时,同步操作是非常有用的。


异步操作:

异步操作是指可能需要一些时间来执行的操作,例如数据获取、网络请求、或其他需要等待的任务。在 Vuex 中,这通常通过 actions 来处理。Actions 是用于分发异步任务的函数,它们可以包含异步代码,例如异步 API 调用,然后在异步操作完成后提交 mutations 来修改状态。


异步操作适用于需要等待的任务,因为它们不会阻塞应用程序的其他操作,使得应用可以继续响应用户的输入。你可以在异步操作中使用异步 JavaScript 特性,如 Promises 或 async/await,来管理异步代码。


4.1 异步改变值

1、src/store/actions.js

export default {
  setNameSync: (context, payload) => {
    //context指的是vuex的上下文
    setTimeout(function() {
      context.commit('setName', payload)
    }, 3500)
  }
};


2、在page1.vue组件添加异步事件

<button @click="Asynchronization">异步改变参数值</button>
    Asynchronization() {
        this.$store.dispatch('setNameSync', {
          name: this.msg
        })
      }



效果图:

目录
相关文章
|
存储 JavaScript Java
Vuex使用方式及异步问题处理
Vuex使用方式及异步问题处理
298 0
|
JavaScript 前端开发 Java
深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解
Array.find() 是 JavaScript 数组方法中一个非常实用和强大的工具。它不仅提供了简洁的查找操作,还具有性能上的独特优势:返回的引用能够直接影响原数组的数据内容,使得数据更新更加高效。通过各种场景的展示,我们可以看到 Array.find() 在更新、条件查找和嵌套结构查找等场景中的广泛应用。 在实际开发中,掌握 Array.find() 的特性和使用技巧,可以让代码更加简洁高效,特别是在需要直接修改原数据内容的情形。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一
|
容器
【D3.js 学习总结】25、D3几何 - 凸包
# d3.geom.hull ![](https://img.alicdn.com/tps/TB1mDHDLXXXXXcNXpXXXXXXXXXX-500-381.png) hull函数用于计算指定坐标点的外围边界,用一个场景来描述,某片草原上有100只羊在不同的位置,我们需要将羊群所在的草场圈起来,那只要将羊群最外围的羊通过一根线连起来就可以实现,同理,hull就是用来计算这个外围边
2058 0
|
8天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
7498 13
|
7天前
|
人工智能 测试技术 API
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
Jev是TypeSafe AI推出的“系统一模型”,不生成文本,专做毫秒级结构化决策:Choice(多选)、Score(打分)、Noul(是非概率)。响应快193倍、成本低444倍,适合工单路由、内容审核、测试定级等高频判断场景。
1579 4
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
|
3天前
|
人工智能 JavaScript 芯片
DeepSeek 官方偷偷上传 Harness 桌面端安装包,我已经用上了。。附最新下载地址
DeepSeek Harness 官方的桌面端安装包被网友扒出来了,2 分钟讲明白如何使用,体验如何,适合作为 AI 编程工具么?附最新 Windows 和 Mac 双端的下载地址
1309 1
|
7天前
|
人工智能 并行计算 PyTorch
秋叶 ComfyUI 2026 整合包 v3.2 完整部署教程:Python 3.13 + Torch 2.13 全栈升级
秋叶aaaki ComfyUI 2026年8月整合包v3.2正式发布!全面升级Python 3.13.11、PyTorch 2.13.0+cu130及ComfyUI v0.30.2,原生支持MiniMax H3、Wan 2.2、Qwen-Image-2.1等2026主流音视频/图像模型,解压即用,无需环境配置。
1074 9
|
20天前
|
人工智能 自然语言处理 安全
阿里云千问办公 QwenWork详细介绍:产品核心能力、典型场景、价格及常见问题解答
千问办公是阿里云推出的一站式AI办公平台,主打"不止于对话,更注重交付",依托通义千问旗舰大模型,用户一句话即可完成数据分析、PPT生成、视频剪辑等复杂任务,直接输出可用成果。产品深度打通钉钉生态与企业OA,覆盖桌面端、网页端,提供企业标准版198元/人/月等多档订阅方案,新用户注册即赠2000积分,适配工程师、HR、财务等多职业办公场景,成为能动手干活的"全能AI同事"。
3615 10
|
4天前
|
编解码 缓存 PyTorch
16G 显卡能跑 Qwen-Image 2.1 吗?
9月20日,阿里Qwen开源Qwen-Image-2.1:7B DiT图像模型+8B文本编码器+VAE,单模型支持文生图与图像编辑,原生输出2K PNG(含Alpha通道),支持10张参考图。在自建Qwen-Image-Bench达60.28分(开源模型第一),GenAI Showdown文生图排名7/15。16G显存可跑1024×1024(需INT8量化+ComfyUI优化),但2K需24G以上。注意其Qwen Research License限非商业用途。
543 1

热门文章

最新文章