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

 更新时间:2023年11月28日 08:55:29   作者:修船工  
这篇文章主要给大家介绍了关于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数据变化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue输入框状态切换&自动获取输入框焦点的实现方法

    Vue输入框状态切换&自动获取输入框焦点的实现方法

    这篇文章主要介绍了Vue输入框状态切换&自动获取输入框焦点的实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • vue-element-admin登录拦截设置白名单方式

    vue-element-admin登录拦截设置白名单方式

    这篇文章主要介绍了vue-element-admin登录拦截设置白名单方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Vue中的路由跳转(返回、刷新、跳转)

    Vue中的路由跳转(返回、刷新、跳转)

    这篇文章主要介绍了Vue中的路由跳转(返回、刷新、跳转)方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • vuex 项目结构目录及一些简单配置介绍

    vuex 项目结构目录及一些简单配置介绍

    这篇文章主要介绍了vuex 项目结构目录及一些简单配置,需要的朋友可以参考下
    2018-04-04
  • vue-cli中使用高德地图的方法示例

    vue-cli中使用高德地图的方法示例

    这篇文章主要介绍了vue-cli中使用高德地图的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • vue3中的父子组件通讯详情

    vue3中的父子组件通讯详情

    这篇文章主要介绍了vue3中的父子组件通讯详情,文章以传统的props展开主题相关资料内容,具有一定参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • element-ui封装一个Table模板组件的示例

    element-ui封装一个Table模板组件的示例

    这篇文章主要介绍了element-ui封装一个Table模板组件的示例,帮助大家更好的理解和学习vue框架的使用,感兴趣的朋友可以了解下
    2021-01-01
  • 详解利用eventemitter2实现Vue组件通信

    详解利用eventemitter2实现Vue组件通信

    这篇文章主要介绍了详解利用eventemitter2实现Vue组件通信,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • vue3使用keep alive实现前进更新后退销毁

    vue3使用keep alive实现前进更新后退销毁

    这篇文章主要为大家介绍了vue3中使用keep alive实现前进更新后退销毁示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • vue 通过下拉框组件学习vue中的父子通讯

    vue 通过下拉框组件学习vue中的父子通讯

    这篇文章主要介绍了vue 通过下拉框组件学习vue中的父子通讯的相关知识,文中涉及到了父组件,子组件的实现代码,需要的朋友可以参考下
    2017-12-12

最新评论