位置: IT常识 - 正文

VUE3 自定义 轻量级全局数据共享方案之一 Provide&inject (简单快速实现vuex功能)(vuecli怎么使用自定义组件)

编辑:rootadmin
在vue2中,提供了provide和inject配置,可以让开发者在高层组件中注入数据,然后在后代组件中使用 除了兼容vue2的配置式注入,vue3在composition api 中添加了provide和inject方法,可以在setup函数中注入 和使用数据 基本使用 provide('key' ... 在vue2中,提供了provide和inject配置,可以让开发者在高层组件中注入数据,然后在后代组件中使用除了兼容vue2的配置式注入,vue3在composition api 中添加了provide和inject方法,可以在setup函数中注入和使用数据基本使用provide('key',value)// app.vue 定义数据<script setup>import { provide,ref } from 'vue'const sum = ref(1)provide('foo',sum) </script>// 其他页面调用<script setup>import { inject } from 'vue'let foo = inject('foo')//传入key 在其他任意页面都能获取到console.log(foo.value)// 1</script>考虑到有些数据需要在整个vue应用中使用,vue还在应用实列中加入了provide方法,用于提供整个应用的共享数据creaetApp(App).provide('fpp',ref(1)).provide('foo',ref(2)).mount('#app')因此,我们可以利用这一点,在整个vue应用中提供共享数据目录结构:

推荐整理分享VUE3 自定义 轻量级全局数据共享方案之一 Provide&inject (简单快速实现vuex功能)(vuecli怎么使用自定义组件),希望有所帮助,仅作参考,欢迎阅读内容。

VUE3  自定义 轻量级全局数据共享方案之一 Provide&inject (简单快速实现vuex功能)(vuecli怎么使用自定义组件)

文章相关热门搜索词:vuecli怎么使用自定义组件,vuecli怎么使用自定义组件,vue3.0自定义组件,vue的自定义指令有哪些?,vuecli怎么使用自定义组件,vue3.0自定义组件,vue自定义dialog,vue3.0自定义组件,内容如对您有帮助,希望把文章链接给更多的朋友!

模块封装

userSever.js

// 模拟ajax api接口使用const userSery = { // 登录接口 login: (name,age) =>{ // 接口返回用户数据 储存在本地 return new Promise((resolve,reject)=>{ setTimeout(()=>{ let user = { name :name, age:age } window.sessionStorage.setItem('user',JSON.stringify(user)) console.log('登录成功') resolve(user) },1000) }) }, // 退出登录 loginOut:()=>{ return new Promise((resolve,reject)=>{ setTimeout(()=>{ window.sessionStorage.removeItem('user') resolve('退出成功') },1000) }) }, // 恢复登录 whoAmI:()=>{ // 读取本地储存的用户数据 return new Promise((resolve,reject)=>{ setTimeout(()=>{ let user = window.sessionStorage.getItem('user'); if(user){ user = JSON.parse(user); console.log('恢复成功',user) resolve(user); } else { reject('恢复失败'); }; },1000) }) }}// store 提供当前登录用户的共享数据import { readonly,reactive,inject } from 'vue';const key = Symbol();// 在传入的vue应用实列中提供数据export function provideStore(app){ // 创建默认的响应式数据 const state = reactive({user:null,loading:false}); // 登录 async function login (loginId,loginPwd){ state.loading = true const user = await userSery.login(loginId,loginPwd); state.user = user; state.loading = false } // 退出 async function loginOut (){ state.loading = true await userSery.loginOut(); state.user = null; state.loading = false } // 恢复登录状态 async function whoAmI (){ state.loading = true try { const user = await userSery.whoAmI(); state.user = user; state.loading = false } catch (e) { state.user = null; } state.loading = false } app.provide(key,{ state:readonly(state), // 对外只读 login, loginOut, whoAmI })}export function useStore(defaultValue = null){ return inject(key,defaultValue)}

View Code封装注入模块给appsrc/store/index.jsimport { provideStore as provideLoginUserStore } from "./userSever.js"// 继续导入其他共享数据模块...// import {provideStore as provideNewsStore } from './sueNew.js'// 提供统一的数据注入接口export default function provideStore (app){provideLoginUserStore(app);// 继续注入其他共享数据// provideNewsStore}main.js导入并且注入appimport { createApp } from 'vue'import App from './App.vue'import router from './router'import provideStore from './store'const app = createApp(App).use(router);provideStore(app) // 提供所有共享数据app.mount('#app')// createApp(App).use(store).use(router).mount('#app')到这里就已经完成了 全部准备工作在你想调用的地方和页面进行下面引入和使用import { useStore} from '../store/userSever.js'const Store = useStore()console.log(Store.state); //定义的state响应式数据// 下面调用 导入模块的指定的函数方法去修改 state共享的响应式数据内容// 点击 登录const loginEvent = ()=>{Store.login('allen',18)};// 退出登录const loginOutEvent = ()=>{Store.loginOut()};// 恢复登录Store.whoAmI()共享响应式数据,在A页面使用到了state,在B页面去调用函数改变 state 那么A页面的state数据也会发送改变,只要使用到的state的地方都会响应式改变数据,相比vuex 更加轻量级 更加具有自定义扩展的能力,因为他本身不依赖任何第三方插件,完全是靠vue本身提供的独立响应式系统来实现的。

本文链接地址:https://www.jiuchutong.com/zhishi/304795.html 转载请保留说明!

上一篇:HashMap源码,看我这篇就够了(hashmap resize源码)

下一篇:java中transient是什么(java transactional)

  • 小米mix3miui12小米闻声如何打开(小米mix3 12.5)

    小米mix3miui12小米闻声如何打开(小米mix3 12.5)

  • 小米8有拍照美颜吗(小米8拍照好看)

    小米8有拍照美颜吗(小米8拍照好看)

  • 苹果大写字母怎么输入(苹果大写字母怎么打出来)

    苹果大写字母怎么输入(苹果大写字母怎么打出来)

  • 电脑ec是什么(电脑里的e是什么意思)

    电脑ec是什么(电脑里的e是什么意思)

  • oppo手机文件导入电脑(oppo手机导入文件)

    oppo手机文件导入电脑(oppo手机导入文件)

  • 华为如何限制应用下载(华为如何限制应用使用)

    华为如何限制应用下载(华为如何限制应用使用)

  • 华为手机怎么恢复智能侧边栏(华为手机怎么恢复相册删除的照片)

    华为手机怎么恢复智能侧边栏(华为手机怎么恢复相册删除的照片)

  • 谷歌浏览器拦截窗口如何解除(谷歌浏览器拦截功能在哪关闭)

    谷歌浏览器拦截窗口如何解除(谷歌浏览器拦截功能在哪关闭)

  • 电脑上的广告怎么永久删除(电脑上的广告怎么拦截)

    电脑上的广告怎么永久删除(电脑上的广告怎么拦截)

  • hma al00是华为什么型号(hmaal00是华为什么手机型号)

    hma al00是华为什么型号(hmaal00是华为什么手机型号)

  • 无线路由器恢复出厂设置后连不上网(无线路由器恢复出厂设置)

    无线路由器恢复出厂设置后连不上网(无线路由器恢复出厂设置)

  • 快手的聊天记录删了能查到吗(快手的聊天记录可以恢复吗)

    快手的聊天记录删了能查到吗(快手的聊天记录可以恢复吗)

  • 数据模型是什么的集合(数据库数据模型是什么)

    数据模型是什么的集合(数据库数据模型是什么)

  • 键盘插上灯亮一下就结束了(键盘插上灯亮一会就灭了)

    键盘插上灯亮一下就结束了(键盘插上灯亮一会就灭了)

  • sim卡读取错误怎么办(sim卡信息读取失败)

    sim卡读取错误怎么办(sim卡信息读取失败)

  • 所选域名不能超过多少字符(域名不可用什么意思)

    所选域名不能超过多少字符(域名不可用什么意思)

  • ipad算电脑还是手机(ipad是平板还是电脑)

    ipad算电脑还是手机(ipad是平板还是电脑)

  • 支付宝实名认证怎么换人(支付宝实名认证可以更改吗)

    支付宝实名认证怎么换人(支付宝实名认证可以更改吗)

  • 拼多多删sku会降权吗(拼多多删掉sku有没有影响)

    拼多多删sku会降权吗(拼多多删掉sku有没有影响)

  • 苹果手机剪映在哪里(苹果手机剪映在哪里找天空的云朵)

    苹果手机剪映在哪里(苹果手机剪映在哪里找天空的云朵)

  • ps怎么去噪点(ps怎么噪点)

    ps怎么去噪点(ps怎么噪点)

  • 抖音逗拍在哪里(抖音里边的逗拍在哪里)

    抖音逗拍在哪里(抖音里边的逗拍在哪里)

  • 为什么看抖音总是卡(为什么看抖音总是觉得那个人就是我)

    为什么看抖音总是卡(为什么看抖音总是觉得那个人就是我)

  • 360安全卫士中360leakfixer.exe是什么进程(使用360安全卫士)

    360安全卫士中360leakfixer.exe是什么进程(使用360安全卫士)

  • atrm命令  删除待执行的任务(删除ont命令)

    atrm命令 删除待执行的任务(删除ont命令)

  • 日主题RiPro-V2后台无法添加卡密(日主题ripro v8.1破解版(修复缓存器功能))

    日主题RiPro-V2后台无法添加卡密(日主题ripro v8.1破解版(修复缓存器功能))

  • 本月累计专项扣款怎么算
  • 坏账核销的会计规定
  • 外地预缴所得税几个点
  • 个体户城市维护建设税减免性质
  • 资信证明好开吗
  • 明明申报了为什么显示没有申报
  • 研发费用扣除比例是百分75吗
  • 商业企业的购货运费计入什么
  • 单位补缴社保会罚款吗
  • 终止合同后原合同怎么处理
  • 购买商品赠送
  • 自建厂房销售
  • 外购材料运输费怎么入账
  • 开具增值税发票的注意事项有哪些?
  • 新个税过了申报期怎么办
  • 出口退税换汇率多少是正常
  • 两个立项可以并在一起招标吗
  • 认缴制下实收资本可以一直为零吗
  • 保险付款后几天给发票保单
  • 折旧率通俗理解
  • 刷信用卡没手续费
  • 货物质量赔偿需要改变收入吗合法吗
  • 桌面图标删不掉怎么回事
  • 如何恢复撤回的信息微信
  • 收益性支出的项目有哪些
  • dghm.exe是什么程序
  • PHP:oci_get_implicit_resultset()的用法_Oracle函数
  • 营改增后土地增值税
  • 分手我不怕
  • php限制登录次数
  • auto.js 逆向
  • php7 nginx
  • php知识点汇总与解答
  • 公司的一项专利多少钱
  • python中datetime用法
  • 货物运输业增值税
  • 经营活动现金流为正说明什么
  • 形成固定资产的主要手段是
  • db2教程
  • python如何实现事务机制
  • 投资收益借贷方代表什么
  • 稽查查补的税款由谁追征
  • 政府返还的个税手续费会计分录
  • 账面原材料比实际库存多怎么办
  • 企业应缴纳税款
  • 支付土地补偿款账务处理
  • sql2008自动启动服务
  • 社保为什么单位缴费是0什么时间才正常
  • 营业成本包含哪些项目
  • 一般纳税人开普票和专票有什么区别
  • 房地产企业拆迁补偿费入账要求
  • 旅行社差额征收怎么报税
  • 社保缴费基数调整后对个人的影响
  • 月末结转销售会计分录
  • 主营业务成本包括哪些费用
  • 总账的建立
  • 电脑操作系统32位和62位怎么升级
  • win10硬盘安装器安装教程
  • linux常用基本命令pwd
  • win8打开桌面
  • xp系统好奇怪哦
  • 趣谈linux系统
  • 进程rundll32停止工作
  • 如何去掉桌面图标的蓝底
  • 根据显示的图的照片吊坠
  • Android中的touch事件
  • unity 扩展编辑器
  • javascript:openattachment
  • 20行的python编程题
  • html5游戏引擎排行
  • eventbus threadmode
  • python教程目录
  • python3.6安装pil
  • cocos2d-x安装
  • 2021年水利基金的税率是多少
  • 广东税务局查验
  • 海员证办理流程需要什么手续时间多长
  • 北京企业所得税汇算清缴时间
  • 税金乘以12%是什么
  • 潍坊市市区
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设