首页 > 其他分享 >vue3如何将 app 全局变量对象变为响应式并监听到某个属性的改变

vue3如何将 app 全局变量对象变为响应式并监听到某个属性的改变

时间:2024-10-08 12:00:50浏览次数:1  
标签:setOrientation const orientation app vue3 屏幕 全局变量 config 监听

需求:

通过 getData() 方法获取到数据对象,想要在屏幕方向改变的时候,给获取到的对象设置  orientation,能实时修改

方案:

使用 reactive 包裹, template 直接使用全局变量下的属性,watch 直接监听对应属性

代码如下:

main.js
const config = reactive(getData())

    // 设置屏幕方向
    const setOrientation = () => {
      config.orientation = getOrientation()
      window.config.orientation = getOrientation()
    }
    setOrientation()
    document.addEventListener('DOMContentLoaded', setOrientation)
    // 绑定屏幕旋转事件
    window.addEventListener('resize', setOrientation)
    window.mraid.addEventListener('sizeChange', setOrientation)
    // 避免锁定屏幕方向的情况下横屏进入,获取方向不对
    setTimeout(setOrientation, 1000)

    app.config.globalProperties.$config = config
    app.provide('config', readonly(config))

*.vue   模板中直接使用

<Logo v-if="$config.orientation === 'portrait'"/>

监听config 某个属性

const config = inject('config')
// 监听屏幕方向的改变,改变后再调用初始化样式的方法
watch(() => config.orientation, init, { immediate: true })

const internalInstance = getCurrentInstance()
const { $config: config } = internalInstance.appContext.config.globalProperties
// 监听屏幕方向的改变,改变后再调用初始化样式的方法
watch(() => $config.orientation, init, { immediate: true })

 

标签:setOrientation,const,orientation,app,vue3,屏幕,全局变量,config,监听
From: https://www.cnblogs.com/beileixinqing/p/18451389

相关文章

  • uniapp - HBuilderX运行到内置浏览器编译报错 ublic static TextAppearance_Holo_Smal
    前言网上的教程都无法解决问题,本文提供强力解决方案。在uniappH5网页开发中,报错提示:ublicstaticTextAppearance_Holo_Small:number;|SyntaxError:Unexpectedidentifier,非常恶心的错误,手机H5网站项目点击运行到内置浏览器后,瞬间报错且无法编译提示已停止运行,H5......
  • Fully-developed Web App
    Assessment2:Fully-developedWebApp-DetailsWeighting:50%(PairorIndividual)NB:youshouldnotstartthisassignmentuntil after youhavesubmittedassignment1Overview- Fully-developedWebAppDue:Sunday27/10/24@11:59:00PM(Week5)Taskdes......
  • Vue3 hooks----实现组合式API
    hooks实现将一个功能的所有数据、方法、生命周期函数放到一块去使用。我们在src底下定义个Hooks文件夹,将我们要进行模块化的功能设置为use功能名。例如:我要将点我加一这个功能进行hooks,则使用useSum.ts这个文件定义功能逻辑。在这个ts里面需要export default 函数这种写法,......
  • Foundations of Applied Mathematics
    FoundationsofAppliedMathematicsMATH4700–Fall2024Homework2DueThursday,October3at12:00PMThishomeworkhas100pointsplus65bonuspoints.Fullcreditwillgenerallybeawardedforasolutiononlyifitispresentedbothcorrectlyandeffi......
  • Nuxt.js 应用中的 app:suspense:resolve 钩子详解
    title:Nuxt.js应用中的app:suspense:resolve钩子详解date:2024/10/6updated:2024/10/6author:cmdragonexcerpt:app:suspense:resolve是一个强大的钩子,允许开发者在异步数据解析完成后的最后一步执行必要的处理。通过合理使用该钩子,我们可以优化组件的渲染过程,并提供......
  • Vue3 watch方法----监视对象
    使用watch时,如果想监视对象的内部属性值。需要使用watch的第三个参数的配置对象,手动开启深度监视。//使用watch时如果想监视对象内部的属性值,需要使用watch的第三个参数,手动开启深度监视watch(person,(newValue,oldValue)=>{console.log('person发生了变化',newValue,o......
  • 婚恋交友系统源码支持微信小程序 + 微信公众号 + H5 + APP
    婚恋交友系统源码小程序:开启你的浪漫之旅在这个快节奏的时代,寻找真爱似乎变成了一项挑战。但有了我们的婚恋交友系统源码小程序,这一切都将变得简单而美好。这款小程序源码专为追求真挚情感的单身男女设计,集成了多种实用功能,旨在为用户提供一个安全、便捷、高效的在线交友平台......
  • (系列五).net8 中使用Dapper搭建底层仓储连接数据库(附源码)
    说明  该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发)。   该系统文章,我会尽量说的非常详细,做到不管新手、老手都能看懂。   说明:OverallAuth2.0是一个简单、易懂、功能强大的权限+可视化流程管理系统。友情提醒:本篇文章是属于系......
  • vue3 watch方法---监视基本类型数据
    watch 监听定义的数据发生改变的时候执行什么函数watch方法有两个参数watch(sum,箭头函数)这个箭头函数里面有两个参数(newValue,oldValue)=>{},如下代码<template><!--watch;监视数据变化vue3可以监视一下四种数据类型:ref定义的数据......
  • Online Shopping App Requirements
    OnlineShoppingAppRequirementsCreateaShoppingapplicationwhichsupportsthefollowing:HighLevelDesign(HLD):UseSpringBoot,Hibernate(HQL,Criteria),MySQL,SpringSecurity+JWT,SpringAOP,SpringValidationtodevelopthebackend.○YouCA......