首页 > 其他分享 >Vuex教程

Vuex教程

时间:2023-06-25 17:25:17浏览次数:49  
标签:username 教程 vuex getters state Vuex store

Vuex使用场景:全局管理数据

注意:vue2项目要安装vuex3版本,vue3项目要安装vuex4版本

安装

npm install vuex@3 --save

建立以下目录结构

/ src
	/ store
		- store.js

创建vuex store

vuex 中最关键的是store对象,这是vuex的核心。可以说,vuex这个插件其实就是一个store对象,每个vue应用有且仅有一个store对象。

// store.js
import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

const store = new Vuex.Store({
  state: {
    // 在这里定义你的状态
    count: 0,
    username: 'zhangsan'
  },
  mutations: {
    // 在这里定义你的mutations
    increment(state) {
      state.count++;
    },
    setUsername(state, username) {
      state.username = username;
    }
  },
  actions: {
    // 在这里定义你的actions
    asyncFetchUsername({ commit }) {
      // 模拟异步请求数据
      setTimeout(() => {
        const username = 'John Doe';
        commit('setUsername', username);
      }, 1000);
    }
  },
  getters: {
    // 在这里定义你的getters
    getCount(state) {
      return state.count;
    },
    getUsername(state) {
      return state.username;
    }
  }
});

export default store;

引入store

//main.js
import Vue from 'vue';
import App from './App.vue';
import store from './store';

new Vue({
  store,
  render: h => h(App)
}).$mount('#app');

在组件中使用Vuex

<template>
  <div>
    <p>Count: {{ count }}</p>
    <p>Username: {{ username }}</p>
    <button @click="increment">Increment</button>
    <button @click="fetchUsername">Fetch Username</button>
  </div>
</template>

<script>
export default {
  computed: {
    count() {
      return this.$store.getters.getCount;
    },
    username() {
      return this.$store.getters.getUsername;
    }
  },
  methods: {
    increment() {
      this.$store.commit('increment');
    },
    fetchUsername() {
      this.$store.dispatch('asyncFetchUsername');
    }
  }
}
</script>

总结

getters和mutations是Vuex中的两个核心概念,它们在用途和作用上有一些区别。

  1. Getters(获取器)
    ○ Getters用于从state中派生出新的数据,类似于计算属性。它们可以对state进行处理和计算,并返回一个新的值。
    ○ Getters可以被视为Vuex Store的计算属性,它们的返回值会被缓存,只有当依赖的state发生改变时才会重新计算。
    ○ Getters通过在Store中定义getters对象来声明。
    ○ 在组件中可以通过this.$store.getters来访问和使用Getter的返回值。
  2. Mutations(变更)
    ○ Mutations是用于修改state的方法。它们是唯一可以修改state的方式。
    ○ Mutations必须是同步函数,用于确保状态的变更是可追踪和可预测的。
    ○ Mutations通过在Store中定义mutations对象来声明。
    ○ 在组件中可以通过this.$store.commit来触发Mutation的执行,从而修改state中的数据。
    总结:
    ● Getters用于派生状态,对state进行计算和处理,并返回新的值,类似于计算属性。
    ● Mutations用于修改state,是唯一可以直接修改state的方式,但要确保是同步的。

标签:username,教程,vuex,getters,state,Vuex,store
From: https://www.cnblogs.com/marshban/p/17503427.html

相关文章

  • Postgresql 9.2安装配置教程(Windows)
    1、安装Postgresql9.2 https://blog.csdn.net/LY1201A/article/details/1064287332、安装postgishttps://www.codenong.com/cs107080664/3、配置连接https://www.cnblogs.com/xysgis/articles/16513814.html4、PostgreSQL安装,出现Failedtoloadsqlmodulesintothedat......
  • git教程之签个名吧
    最近我成功用上gpg签名了,顺手写个教程啊等等,上次git教程写的啥来着才写到入门??而且是我整个公众号创立以来的第四篇文章?后面就再也没写过git??没有关系啊,好像把git的基础操作都简单讲了一遍,无伤大雅啊,下期再慢慢细说git的其他操作好了进入正题git教程之签个名gpg是啥首先先......
  • 博客园美化教程大集合
    个人博客转移至:https://sunhwee.com,第一时间会先发在前者,有时间再更新至博客园。阅读目录:1. 前言2.定制自己的博客00.美化整体效果01.准备工作02.自定义个性化导航栏03.添加顶部博主信息04.添加顶部滚动公告05.为博客文章添加目录导航06.添加分......
  • WPF入门教程系列二十九 ——DataGrid使用示例MVVM模式(7)
    WPF入门教程系列目录WPF入门教程系列二——Application介绍WPF入门教程系列三——Application介绍(续)WPF入门教程系列四——Dispatcher介绍WPF入门教程系列五——Window介绍WPF入门教程系列十一——依赖属性(一)WPF入门教程系列十五——WPF中的数据绑定(一) 接上文WPF......
  • CouchDB教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介CouchDB是一个开源的面向文档的数据库管理系统,可以通过RESTfulJavaScriptObjectNotation(JSON)API访问。术语“Couch”是“ClusterOfUnreliableCommodityHardware”的首字母缩写,它反映了CouchDB的目标具有高度可伸缩性,提供了高可用性和高可靠性,即使运......
  • 课程介绍:YOLOv8实战火焰和烟雾检测 (视频教程)
    课程链接:https://edu.51cto.com/course/34090.htmlYOLOv8基于先前YOLO版本在目标检测任务上的成功,进一步提升性能和灵活性。本课程将手把手地教大家使用YOLOv8结合可变形卷积(deformableconvolution)训练火焰和烟雾数据集,完成一个多目标检测实战项目,可实时检测图像、视频、摄像......
  • vuex里面的this.$store.dispatch 和 this.$store.commit用法以及区别
     两个方法都是传值给vuex的mutation改变statedispatch:异步操作,数据提交至actions,可用于向后台提交数据this.$store.dispatch('isLogin',true);commit:  同步操作,数据提交至mutations,可用于登录成功后读取用户信息写到缓存里this.$store.commit('loginStatus',1);......
  • RocketMQ安装教程
    RocketMQ是阿里巴巴在2012年开发的分布式消息中间件,专为万亿级超大规模的消息处理而设计,具有高吞吐量、低延迟、海量堆积、顺序收发等特点。它是阿里巴巴双十一购物狂欢节和众多大规模互联网业务场景的必备基础设施。在同一年,阿里巴巴正式开源了RocketMQ的第一个版本。20......
  • 宝塔面板实用教程(1):10分钟部署在线客服系统
    客服系统发布以来,一直有朋友询问如何在宝塔面板中安装部署,开始我一直认为参考Linux版的安装教程就可以了,一直没有专门写宝塔环境的教程。这段时间来咨询的朋友越来越多,经过了解,我才知道宝塔面板的普及率有多高,好吧,那我就认真对待一下这个问题,详细编写了基于宝塔安装部署升讯威在......
  • Three.js教程:WebGL渲染器设置(锯齿模糊)
    推荐:将NSDT场景编辑器加入你的3D工具链其他系列工具:NSDT简石数字孪生WebGL渲染器设置(锯齿模糊)一般实际开发,threejs的WebGL渲染器需要进行一些通用的基础配置,本节课给大家简单介绍下,比如渲染模糊或锯齿问题。渲染器锯齿属性.antialias设置渲染器锯齿属性.antialias的值可以......