Vue3组件不发生变化,如何监听pinia中数据变化?

这篇具有很好参考价值的文章主要介绍了Vue3组件不发生变化,如何监听pinia中数据变化?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景前提

在开发过程中,我们需要将一些跨组件使用的的数据在pinia中进行状态管理,组件在初始化的时候我们能通过onMounted,computed,watch,watchEffect获取到存储在pinia state中的内容,有一些特殊情况,在组件初始化之后我们无法通过以上四种情况获取state中的内容,这时候我们怎么做呢?
这时候我们就需要用到$subscribe

二、案例说明

项目中时常我们会设置主题,初始化的时候我们会默认一种主题,在网上我们也可以进行主题切换设置不同的主题。
项目在定制主题时,我们需要主题去配置不同的色系,背景图片等。

接下来,说一下在项目中遇见的问题,及解决方式。

在切换主题的时候,发现在组件中设置的svg背景图片无法通过监听获取state中的主题,在pinia官网中我们找到了答案pinia官网插件

Vue3中我们可以通过v-bind在style中动态绑定样式
使用pinia中$subscribe进行订阅监听文章来源地址https://www.toymoban.com/news/detail-507982.html

<i class="iClassTop"></i>
<style lang="scss" scoped>
 .iClassTop:hover { background-image: v-bind(bgurl);}
</style>
import { useMapStore } from '@/store/index.js'
const mapStore = useMapStore();
const bgurl = ref('');
//这里有坑,mutation的events事件打包后不存在,在获取pinia中值时,需要使用state
mapStore.$subscribe((mutation, state) => {
bgurl.value = bgurl.value = state.currentSkin==='dark'?'url(\'../light-dark.svg\')':'url(\'../light-white.svg\')';
});

到了这里,关于Vue3组件不发生变化,如何监听pinia中数据变化?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue2 、vue3 监听对象的变化

    vue响应式也叫作数据双向绑定 MVVM模型 (Model-Viem-ViewModel) DOM listeners:实现了页面与数据的绑定,当页面操作数据的时候 DOM 和 Model 也会发生相应的变化 Data Bindings:  实现了数据与页面的绑定,当数据发生变化的时候会自动渲染页面 2.1  实现原理 vue实现数据响应式,是通过

    2024年02月04日
    浏览(36)
  • Vue3优雅地监听localStorage变化

    目录 💡前言  💡 为什么要这样做? 💎 思路 💎 实现 🚗 实现中介者模式 🚗 重写localStorage 🚗 实现useStorage hook 💎 测试 🚗 使用localStorage 🚗 监听localStorage变化 🚗 结果         最近在研究框架,也仔细用了Vue3一些功能,今天分享一次我的实践:         原生的

    2024年02月08日
    浏览(39)
  • vue3 动态监听浏览器窗口变化

    定义一个属性记录宽度 在 vue mounted 的时候 去挂载一下 window.onresize 方法 去监听这个 属性值的变化,如果发生变化则讲这个 val 传递给 this.screenWidth 这样screenWidth就跟随浏览器的窗口大小动态变化了 进行使用

    2024年02月13日
    浏览(35)
  • vue3 实现监听store里state状态变化

    需要注意: 不能直接监听对象的属性值,需要写成getter函数。 总结: watch 的第一个参数可以是不同形式的数据源,它可以是一个ref(包括计算属性),一个响应式对象,一个getter函数,或多个数据源组成的数组。 不能直接监听响应式对象的属性: 这里需要写成返回对象属

    2024年02月17日
    浏览(33)
  • vue3 封装自定义指令,监听元素宽高的变化

    最近做一个项目,涉及到echart图,要去根据父元素去自适应宽高,所以需要监听到元素的宽高变化、 因为是 监听某一元素的宽高变化 ,所以这里用的是 ResizeObserver. ResizeObserver 是可以监听到DOM元素,宽高的变化,需要注意的一点就是监听出变化结果是contentBox的宽度和高度。

    2024年02月07日
    浏览(32)
  • vue3组件通信之pinia

      在vue3,vue的状态管理也迎来了新的变更,在vue3使用新的组件pinia来代理原有的vuex。pinia相比vuex,功能收敛了不少,比如不直接暴露setter方式,外部直接修改数据 vuex:集中式管理状态容器,可以实现任意组件之间通信 核心概念:state、mutations、actions、getters、modules pinia:集中式

    2024年02月11日
    浏览(28)
  • vue2 如何监听数组的变化

    在Vue 2中,底层是通过重写数组的原型方法来实现对数组变化的监听。具体来说,Vue 2使用了一个名为Observer的类来劫持数组的原型方法,使其在调用这些方法时能够触发相应的变化通知。 当Vue 2初始化一个响应式对象时,如果对象是一个数组,Vue会将数组的原型指向一个经过

    2024年02月12日
    浏览(37)
  • vue如何实现实时监听页面宽度高度变化

    运用的主要技术:watch监听 话不多说直接上代码,自行研究

    2024年02月11日
    浏览(34)
  • vue watch监听数据变化

    监听数据变化,在Vue中是通过侦听器来实现的,你也可以将它理解为监听器,时刻监听某个数据的变化 这一次我们要添加的是watch属性。下面我们先来眼熟一下侦听器的添加位置: 侦听器更多的是用在异步操作中,所谓异步操作就是数据返回有所延迟的操作,比如说我们要请

    2024年02月12日
    浏览(35)
  • vue 解决el-table 表体数据发生变化时,未重新渲染问题

     父组件中数量改变后总数重新计算 父组件代码  WmsTable 是子组件名  WmsTable 中的数量字段quantity修改时重新计算合计

    2024年01月20日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包