Vue3组件不发生变化如何监听pinia中数据变化
作者:修船工
这篇文章主要给大家介绍了关于Vue3组件不发生变化如何监听pinia中数据变化的相关资料,pinia是Vue的存储库,它允许您跨组件/页面共享状态,文中通过代码介绍的非常详细,需要的朋友可以参考下
一、背景前提
在开发过程中,我们需要将一些跨组件使用的的数据在pinia中进行状态管理,组件在初始化的时候我们能通过onMounted,computed,watch,watchEffect获取到存储在pinia state中的内容,有一些特殊情况,在组件初始化之后我们无法通过以上四种情况获取state中的内容,这时候我们怎么做呢?
这时候我们就需要用到$subscribe
二、案例说明
项目中时常我们会设置主题,初始化的时候我们会默认一种主题,在网上我们也可以进行主题切换设置不同的主题。
项目在定制主题时,我们需要主题去配置不同的色系,背景图片等。
接下来,说一下在项目中遇见的问题,及解决方式。
在切换主题的时候,发现在组件中设置的svg背景图片无法通过监听获取state中的主题,在pinia官网中我们找到了答案pinia官网插件
Vue3中我们可以通过v-bind在style中动态绑定样式
使用pinia中$subscribe进行订阅监听
<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中数据变化的文章就介绍到这了,更多相关Vue3监听pinia数据变化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!