vue3 单一状态管理

news/2024/7/19 16:36:49 标签: vue.js, javascript, 前端, js, vue3

目录

  • 1,问题
  • 2,单一状态管理

1,问题

有一个全局错误弹窗,当项目中有接口报错时,会显示错误信息。

思路:在 axios 的响应拦截器中,满足条件后打开错误弹窗。

问题:如何在 js 文件(axios)中,向 vue 文件(错误弹窗)传参,而且是响应式的?

2,单一状态管理

vue -状态管理

一个比较容器想到的方式——状态管理器 Vuex 或 Pinia。借鉴这个思路,可以通过自定义一个全局单例来实现。

目录

-- api
  -- index.js
-- component
  -- dialogError
    -- index.vue
    -- useError.js

实现

1,dialogError/useError.js 实现单例。

js">import { ref } from 'vue'

// error 专属单例
const errorRef = ref(null)

export default errorRef

2,api/index.js 单例赋值。

js">import axios from 'axios'
import errorRef from '@/components/dialogError/useError'

axios.interceptors.request.use(
  // ...
)

axios.interceptors.response.use(
  function (response) {
    if (response.data.responseCode === '00000') {
      return response.data
    // 接口报错  
    } else {
      if (location.pathname !== '/error.html') {
        // 防止因为多个接口,多次执行
        if (!errorRef.value) {
          errorRef.value = response.data
        }
      } else {
        return response.data
      }
    }
  },
  function (error) {
    return Promise.reject(error)
  }
)

export default axios

3,dialogError/index.vue 单例使用。

<template>
  <Dialog :show="visible">
    <div>({{ errorRef }})</div>
    <div @click="handleClose">关闭</div>
  </Dialog>
</template>

<script setup>javascript">
import { ref, watch } from 'vue'
import Dialog from '../Dialog.vue'
import errorRef from './useError'

const visible = ref(false)
watch(
  () => errorRef.value,
  (nv) => {
    visible.value = !!nv
  }
)

const handleClose = () => {
  visible.value = false
}
</script>

以上。


http://www.niftyadmin.cn/n/4962681.html

相关文章

数据库——事务,事务隔离级别

文章目录 什么是事务?事务的特性(ACID)并发事务带来的问题事务隔离级别实际情况演示脏读(读未提交)避免脏读(读已提交)不可重复读可重复读防止幻读(可串行化) 什么是事务? 事务是逻辑上的一组操作&#xff0c;要么都执行&#xff0c;要么都不执行。 事务最经典也经常被拿出…

如何深入理解 JavaScript 中的懒加载

懒加载是一种延迟加载非必要内容的方法&#xff0c;直到用户需要查看它为止。与其他加载方法不同&#xff0c;其他加载方法在访问页面时同时加载所有网站资源&#xff0c;而懒加载采取更加谨慎的方式。它延迟显示某些元素&#xff0c;如图片、视频和其他多媒体&#xff0c;直到…

wazuh配置和案例复现

wazuh配置 安装wazuh有二种方法 第一种 在官网下载ova文件 打开VMware进行虚拟机安装 账号:wazuh-user 密码:wazuh 将网络设置为net模式 重启网卡 systemctl network restart查看ip ip add启动小皮 远程连接 默认账号和密码admin admin 第二种 yum安装根据官方文件的步骤…

使用扩展函数方式,在Winform界面中快捷的绑定树形列表TreeList控件和

在一些字典绑定中&#xff0c;往往为了方便展示详细数据&#xff0c;需要把一些结构树展现在树列表TreeList控件中或者下拉列表的树形控件TreeListLookUpEdit控件中&#xff0c;为了快速的处理数据的绑定操作&#xff0c;比较每次使用涉及太多细节的操作&#xff0c;我们可以把…

Android初学之android studio运行java/kotlin程序

第一步骤&#xff1a;File—>New—>New Module&#xff0c;然后弹出一个框&#xff0c;&#xff08;左边&#xff09;选择Java or Kotlin Library&#xff0c;&#xff08;右边&#xff09;编辑自己的图书馆名、包名、类名&#xff0c;选择Java一个语言&#xff0c;然后F…

优化广告运营,代理IP的作用不容忽视

在当今激烈的市场竞争中&#xff0c;广告投放早已成为企业营销的重要手段。广告投放不仅可以提高品牌知名度、产品可信度&#xff0c;还能够树立品牌形象&#xff0c;增强市场竞争力。然而&#xff0c;影响广告投放效果的因素很多&#xff0c;投放时间段、投放地区、在哪个平台…

Hive 导入csv文件,数据中包含逗号的问题

问题 今天 Hive 导入 csv 文件时&#xff0c;开始时建表语句如下&#xff1a; CREATE TABLE IF NOT EXISTS test.student (name STRING COMMENT 姓名,age STRING COMMENT 年龄,gender STRING COMMENT 性别,other_info STRING COMMENT 其他信息 ) COMMENT 学生信息表 ROW FORM…

从项目中移除CocoaPods

一、删除文件 打开项目文件Show in Finder:删除本地文件(Podfile、Podfile.lock、Pods文件夹)删除本地生成的xcworkspace文件 二、删除配置文件 打开项目&#xff0c;在Frameworks文件夹下&#xff0c;删除Pods.xcconfig和libPods.a进入项目Build Phases&#xff0c;删除Cop…