web前端之若依vue3不能及时获取字典值的解决方案、二次封装若依自带的获取字典方法、watchEffect、watch

本文主要是介绍web前端之若依vue3不能及时获取字典值的解决方案、二次封装若依自带的获取字典方法、watchEffect、watch,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MENU

  • 前言
  • watch和watchEffect的区别
  • 解决若依vue3不能及时获取字典值


前言

因为请求字典的过程是异步
所以没能及时获取到字典数据


watch和watchEffect的区别

基本使用

const { a_type, b_type } = proxy.useDict("a_type", "b_type");
watch(() => a_type.value, (newVal) => {console.log('newVal: ', newVal);// Proxy(Array) {0: {…}, 1: {…}, 2: {…}}
});
watchEffect(() => {console.log('a_type: ', a_type.value);// Proxy(Array) {}// Proxy(Array) {0: {…}, 1: {…}, 2: {…}}
});

1、watch只在有值的时候触发
2、watchEffect只要值有变动就会触发


使用场景

watch适用于监听特定数据的变化,并在数据变化时执行回调函数。可以监视一个或多个特定的数据,并在它们变化时执行自定义的逻辑。
watchEffect则更适合于“副作用”式的场景,会自动追踪其回调函数内部用到的响应式数据,并在这些数据变化时重新运行回调函数。


用法
watch

watch(source, callback, options?)
source: 要监视的数据源,可以是一个函数或一个ref/reactive对象。
callback: 当source变化时执行的回调函数。
options: 可选参数,用于配置watch的行为。


watchEffect

watchEffect(effect, options?)
effect: 一个包含响应式数据访问的函数,Vue会追踪此函数的依赖关系。
options: 可选参数,用于配置watchEffect的行为。


自动追踪依赖

watch需要明确指定要监视的数据,它不会自动追踪数据的依赖。
watchEffect会自动追踪其回调函数内部使用的响应式数据,无需手动指定依赖。


返回值

watch的返回值是一个用于停止观察的函数。
watchEffect不直接返回一个停止观察的函数,但可以使用stop函数来停止副作用的运行。


演示

import { ref, watch, watchEffect } from 'vue';const data = ref(1);// watch的用法
const stopWatch = watch(data, (newValue, oldValue) => {console.log(`watch - Data changed: ${oldValue} -> ${newValue}`);
});// watchEffect的用法
const stopWatchEffect = watchEffect(() => {console.log(`watchEffect - Data value: ${data.value}`);
});// 修改数据,触发watch和watchEffect
data.value = 2;// 停止watch和watchEffect的观察
stopWatch();
stopWatchEffect();

在上面的例子中,watch显式地监视了data的变化,而watchEffect自动追踪了回调函数内部对data的访问。


解决若依vue3不能及时获取字典值

繁杂的dict写法

若依框架的使用方式与上面相同,此案例是个人自己封装的结果,解决了字典复用问题。

const { proxy } = getCurrentInstance();let dict = reactive({aTypeOption: [],bTypeOption: [],
});/*** 获取字典数据*/
async function handleDicts() {let obj = {aTypeOption: "a_type",bTypeOption: "b_type",};for (const key in obj) {if (Object.hasOwnProperty.call(obj, key)) {let result = proxy.useDict(obj[key]);// 第二次进入组件能及时获取到数据// 所以watch不会被触发if (result[obj[key]].value) dict[key] = result[obj[key]].value;watch(() => result[obj[key]].value, (newVal) => {dict[key] = newVal;});}}
}handleDicts();

dict变量的另一种实现方法

let dict = reactive({aType: {option: [],dict: 'a_type'},bType: {option: [],dict: 'b_type'},
});

这篇关于web前端之若依vue3不能及时获取字典值的解决方案、二次封装若依自带的获取字典方法、watchEffect、watch的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/667643

相关文章

golang1.23版本之前 Timer Reset方法无法正确使用

《golang1.23版本之前TimerReset方法无法正确使用》在Go1.23之前,使用`time.Reset`函数时需要先调用`Stop`并明确从timer的channel中抽取出东西,以避... 目录golang1.23 之前 Reset ​到底有什么问题golang1.23 之前到底应该如何正确的

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

详解如何在React中执行条件渲染

《详解如何在React中执行条件渲染》在现代Web开发中,React作为一种流行的JavaScript库,为开发者提供了一种高效构建用户界面的方式,条件渲染是React中的一个关键概念,本文将深入探讨... 目录引言什么是条件渲染?基础示例使用逻辑与运算符(&&)使用条件语句列表中的条件渲染总结引言在现代

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

Git中恢复已删除分支的几种方法

《Git中恢复已删除分支的几种方法》:本文主要介绍在Git中恢复已删除分支的几种方法,包括查找提交记录、恢复分支、推送恢复的分支等步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录1. 恢复本地删除的分支场景方法2. 恢复远程删除的分支场景方法3. 恢复未推送的本地删除分支场景方法4. 恢复

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用