iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >web开发中Vuex怎么用
  • 721
分享到

web开发中Vuex怎么用

2024-04-02 19:04:59 721人浏览 八月长安
摘要

这篇文章给大家分享的是有关web开发中Vuex怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是vuex说白了就是一个可以全局管理状态的东西,用官方的话说是它采用集中式存

这篇文章给大家分享的是有关web开发Vuex怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

什么是vuex

说白了就是一个可以全局管理状态的东西,用官方的话说是它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化,说人话就是可以时刻监听一个值的状态改变,同时项目里面别的组件也可以使用这个变量。做出相应的处理。

安装

这个是万年不变的,没什么好说的。直接在项目里面运行下面这行代码

npm install vuex --save

我的业务场景

首先说一下业务场景,不然看代码是没有意义的,毕竟代码是为了解决业务的问题,我的业务是需要做一个机器的管理项目,那么这个机器有很多台,例如机器1、机器2等,那么想管理就需要将所有的机器先拿到,然后根据需要切换想设置的机器,view显示对应的机器的配置信息,需求是很明确的,我语言表达能力不行,直接看图。

web开发中Vuex怎么用

这里简单的解释一下,有人说,这个不是很简单嘛,直接将切换的函数写到select的控件里面,直接点击切换的函数的时候直接给后端对应的uuid,拿到值就可以了,是的,如果只有这一个页面是可以的,但是仔细看布局,select组件是在一个公共组件里面的,你选择的时候你的uuid是不可以直接给到当前页面的,即时给到他,别的配置怎么办呢?而且我们要做的是切换的时候直接整个项目里面的uuid全部改掉,然后重新渲染整个数据,才是合理的解决方案。说一下我开始的想法,我开始是准备使用缓存做,每次用户切换的时候我都将最新的uuid放到缓存里面,但是有一个问题解决不了就是在别的页面怎么实时监听这个值改变了呢?所以,使用vuex是一个比较合理的解决方案,看代码

使用

新建一个store.js

引入

  • 在store.js里面直接将下面的代码复制到里面

  • 声明一个您需要监听的变量(store.js)


import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)


const state = {
 Machine_uuid_flag: '', //机器uuid
}

const getters = {
 getters_mac_uuid() {
  return state.machine_uuid_flag
 }
};
const mutations = {
 mutations_mac_uuid(state, mac_uuid) {
  state.machine_uuid_flag = mac_uuid
 }
};
const actions = {
 actions_mac_uuid(state, mac_uuid) {
  state.commit('mutations_mac_uuid', mac_uuid)
 }
};

export default new Vuex.Store({
 state,
 getters,
 mutations,
 actions
})

页面使用

首先我们子啊公共组件也就是展示select组件的地方将切换事件处理一下


   change_machine(machine_mac_uuid) {
    this.machine_id = machine_mac_uuid;
    // 这里是将最新的更换的机器的uuid,将store里面的uuid更换掉,这样才可以保证别的地方使用这个uuid的地方也会同时改变
    this.$store.dispatch('actions_mac_uuid',machine_mac_uuid);
    sessionStorage.setItem('machine_mac_uuid', this.machine_id)
   },

把引入组件的代码也贴上来吧,这样好理解

<el-select v-model="machine_name" placeholder="自助机列表" size="mini" @change="change_machine">
       <el-option
        v-for="item in machine_list"
        :key="item.mac_uuid"
        :label="item.machine_name"
        :value="item.mac_uuid">
       </el-option>
</el-select>

这个时候下面的页面怎么接收这个值做出相应的改变呢?

  created: function () {
   this.machine_mac_uuid = sessionStorage.getItem('machine_mac_uuid');
   this.machine_name = sessionStorage.getItem('machine_name');
   //将最新的uuid拿到
   this.update_mac_uuid = this.$store.state.machine_uuid_flag;
   this.get_settings_info()
  },
  
  computed:{
   machine_uuid_flag(){
    //将接收到的最新的uuid return出去 
    return this.$store.state.machine_uuid_flag
   }
  },
  
  watch: {
   //监听这个值是不是接收到,改变的话直接重新执行获取机器的方法
   machine_uuid_flag: function (newvalue , oldvalue) {
    this.update_mac_uuid = newvalue; //将最新的值传递给更新的对象
    this.get_settings_info();
   }
  },
  methods: {
   
   get_settings_info() {
    this.$axiOS({
     method: 'post',
     url: this.api.api_zzj_9006 + 'manager_back/get_main_info/',
     data: {
      machine_uuid: this.update_mac_uuid ? this.update_mac_uuid : this.machine_mac_uuid
     }
    }).then((res) => {
     let machine = res.data.data;
     this.machine_name = machine.machine_name;
     this.machine_mac_uuid = machine.machine_mac_uuid;
     this.location = machine.location;
     this.mac_uuid = machine.mac_uuid;
     this.machine_uuid = machine.machine_uuid;
     this.mac_uuid_two = machine.mac_uuid_two;
     this.expire_data = machine.expire_data;
     this.environmental_state_dec = machine.environmental_state_dec;
     this.machine_type_des = machine.machine_type_des;
     this.system_version = machine.system_version;
    }).catch((err) => {
     console.error(err)
    })
   }
  },

我在想你们是不是心里一万句cnm飘过,写那么多做什么?装逼吗?其实不是的,是我在看别人的博客的时候发现一个问题,就是很多人贴代码的时候因为贴的是一部分,导致很多人摸不着头脑,也不知道每一个方法是怎么传递的,我不想我的博客别人看了以后也有这样的疑问,所以才整个直接贴出来,当然我会做出详细的解释,。

解释一下上面的代码:首先我们在页面加载的时候也就是created的阶段将最新的uuid也就是store里面的全局变量的值拿到,有人说你拿到, 为什么还要写下面的,那么问题就来了,如果用户在当前页面直接切换了机器的uuid,那么他没有刷新页面,也没有切换页面,这个时候created是不会执行的,是不是,那么最新的uuid怎么更新呢?你即使监听了但是由于createrd不执行,导致的问题就是你监听的值一直没有变化,所以我们需要将页面里面的uuid变化时刻监听,所以我们需要在computed里面接收最新的uuid,然后我们监听这个里面的值,只要改变,就做出相应的改变,这样就满足了我们的需求,

问题1:为什么使用computed不直接使用watch?

有人看到以后就会觉得我们直接监听这个值不行吗?我们这里要明白的是watch是只可以监听data里面声明的变量或者对象,除此之外是监听不到的,而computed用来监控自己定义的变量,该变量不在data里面声明,直接在computed里面定义,然后就可以在页面上进行双向数据绑定展示出结果或者用作其他处理。

问题2:为什么使用缓存?

这里使用缓存的目的是为了你第一次进来的时候,如果用户什么都不切换,不执行change_machine函数的话,那么我们请求接口的参数是空的,所以我们需要默认一个值,你可以直接在store里面默认,也可以我在第一次进来的时候直接判断是不是存在store的值,没有的话就用我默认的缓存里面的值。

问题3: 为什么created里面已经拿到了,还要写监听函数?

这个问题可能有人会问,但是其实很简单,因为用户不刷新页面的时候created是不执行的,那么我们就拿不到最新的uuid进行数据的更新,所以要写监听的函数。

问题4: 为什么使用this.$store.dispatch?

我们这里使用是根据官方文档来的,你可以直接使用commit或者什么也不用,直接this.$store.state.machine_uuid_flag也是可以的,但是我们改变了uuid,那么就要重置一下store里面的原始值,所以这里需要接收我们改变的值,也就是用户选择了别的机器的时候用的值。如果我们不需要重置原始值的话,可以直接定义一个全局变量,然后直接

this.$store.state.machine_uuid_flag(这里格式乱了)就可以了,但是这样的业务场景应该不多。毕竟我们定义了就是为了改变它从而我们可以监听这个变化的值。

感谢各位的阅读!关于“WEB开发中Vuex怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: web开发中Vuex怎么用

本文链接: https://www.lsjlt.com/news/75717.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • web开发中Vuex怎么用
    这篇文章给大家分享的是有关web开发中Vuex怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是vuex说白了就是一个可以全局管理状态的东西,用官方的话说是它采用集中式存...
    99+
    2024-04-02
  • 使用Vuex进行web开发的示例分析
    这篇文章主要介绍使用Vuex进行web开发的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1 vuex的概念理解提到vuex,就不能不先提vue.我个人开始尝试学习使用vue...
    99+
    2024-04-02
  • 外web开发中函数怎么调用
    这篇文章主要讲解了“外web开发中函数怎么调用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“外web开发中函数怎么调用”吧!一、函数具有某种特定功能的一段代码,函数简化了代码,提高了代码的复...
    99+
    2023-06-04
  • node.js中怎么实现web开发
    这篇文章给大家介绍node.js中怎么实现web开发,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.express框架安装1)在node命令行模式下输入以下命令npm in...
    99+
    2024-04-02
  • Delphi中怎么进行Web开发
    在Delphi中进行Web开发可以使用Delphi自带的WebBroker技术,通过创建Web模块和Web模块中的Action来处理...
    99+
    2024-03-13
    Delphi
  • web开发中.removeClass有什么用
    小编给大家分享一下web开发中.removeClass有什么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!   .removeClass( [className ] )   描述: ...
    99+
    2024-04-02
  • Python中的Web开发框架怎么使用
    这篇文章主要介绍了Python中的Web开发框架怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python中的Web开发框架怎么使用文章都会有所收获,下面我们一起来看看吧。在开始之前,我们先要安装好需要...
    99+
    2023-07-06
  • 怎么用Python进行web开发
    本篇内容主要讲解“怎么用Python进行web开发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python进行web开发”吧!Python 开发是一种简单易学,功能强大的解释型编程语言,...
    99+
    2023-06-17
  • Web应用开发TypeScript怎么使用
    这篇文章主要介绍“Web应用开发TypeScript怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Web应用开发TypeScript怎么使用”文章能帮助大家解决问题。一、什么是 TypeSc...
    99+
    2023-06-30
  • 怎么用HTML5开发移动web
    这篇文章将为大家详细讲解有关怎么用HTML5开发移动web,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   一、移动web开发现状:   当下人们使用频率最高的设备...
    99+
    2024-04-02
  • 怎么用JavaServer Faces开发Web应用
    这篇文章主要介绍了怎么用JavaServer Faces开发Web应用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用JavaServer Faces开发Web应用文章都会有所收获,下面我们一起来看看吧。事...
    99+
    2023-06-03
  • web开发中怎么实现水印
    小编给大家分享一下web开发中怎么实现水印,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 日常工作中...
    99+
    2024-04-02
  • vue+vuex+koa2开发环境怎么搭建
    这篇“vue+vuex+koa2开发环境怎么搭建”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue+vuex+koa2开发...
    99+
    2023-07-04
  • web开发中怎么用代码编制情书
    这篇文章主要讲解了“web开发中怎么用代码编制情书”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web开发中怎么用代码编制情书”吧!感谢各位的阅读,以上就是“web开发中怎么用代码编制情书”...
    99+
    2023-06-03
  • Python web开发框架Pyramid怎么用
    要使用Python web开发框架Pyramid,你需要按照以下步骤进行操作: 安装Pyramid:使用pip命令安装Pyram...
    99+
    2023-10-23
    Python Pyramid
  • SpringBoot怎么使用GraphQL开发Web API
    这篇文章主要讲解了“SpringBoot怎么使用GraphQL开发Web API”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot怎么使用GraphQL开发Web&...
    99+
    2023-07-05
  • web开发中workerman是什么
    这篇文章主要为大家展示了“web开发中workerman是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“web开发中workerman是什么”这篇文章吧。 ...
    99+
    2024-04-02
  • Java Web开发中怎么自定义Session
    今天小编给大家分享一下Java Web开发中怎么自定义Session的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下...
    99+
    2024-04-02
  • vuex中Getter怎么用
    这篇文章给大家分享的是有关vuex中Getter怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言Vuex 允许我们在 store 中定义“getter”(可以认为是 store 的计算属性)。就像计算属性...
    99+
    2023-06-20
  • web开发中Less是什么
    这篇文章主要介绍了web开发中Less是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   Less是什么?   Less是一种CS...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作