Vue3 Pinia结构化赋值storeToRefs 解决响应式丢失 保持响应式

Store

javascript 复制代码
//store里的数据
  const userId=ref(6699)
  const userMsg=reactive({
        token:'addadgsadadadada',
        phone:'13111111111',
        age:13
    })
  
    const updateUser=(newUserId)=>{
        userId.value=newUserId
    }

组件

javascript 复制代码
import {useUser} from "@/store/user.js";
//导入store
const  userStore =useUser()
//得到 user 模块返回的对象
console.log(userStore.userId)
//获取用户数据
html 复制代码
  <h1>用户信息{{userStore.userMsg}}</h1>

正常情况下需要这样去获取或者调用完方法,这都需要通过userStore.xxx去获取,有时候想直接通过方法名去使用。

javascript 复制代码
const { userId ,level} =userStore

可以使用结构化赋值,但是这样失去了响应式。

正确写法

使用storeToRefs

javascript 复制代码
<script setup>
import {useUser} from "@/store/user.js";
import {storeToRefs} from "pinia";

const  userStore =useUser()
//得到 user 模块返回的对象

const { userId ,level} =storeToRefs( userStore)
html 复制代码
 <h1>用户ID{{userId}}</h1>

这样就不用去userStore.xxx去获取数据。

storeToRefs只负责数据的相关处理,如是方法就会失效。

使用函数

javascript 复制代码
const { updateUser} = userStore
相关推荐
Lkstar4 小时前
Vue keep-alive 原理全解:LRU 缓存策略、源码级理解
前端·vue.js·面试
会联营的陆逊4 小时前
html2canvas 1.4.1 在 iOS Safari 中生成图片卡住的问题排查与修复
前端
ZC跨境爬虫5 小时前
跟着 MDN 学CSS day_13 :(深入理解CSS中的元素尺寸调整)
前端·javascript·css·ui·html·tensorflow
threelab5 小时前
Three.js 加载 3D Tiles 瓦片数据 | 三维可视化 / AI 提示词
开发语言·前端·javascript·人工智能·3d·着色器
百度地图开放平台5 小时前
我用百度地图 Skills 体系重构了物流调度系统,节省了 90% 的人力
前端·github
JavaAgent架构师5 小时前
前端AI工程化(九):AI Agent平台前端架构设计
前端·人工智能
No8g攻城狮6 小时前
【AI工具】wsl2 + ubuntu22.04安装部署sub2api详细教程
人工智能·ai·go·vue
_洋6 小时前
Three.js加载 .obj文件 和 .gltf文件
开发语言·javascript·ecmascript
梦想CAD控件6 小时前
网页端对DWG图纸进行预览与批注(CAD轻量化)
java·前端·javascript
代码煮茶6 小时前
Vue3 埋点实战 | 从 0 搭建前端用户行为埋点系统
vue.js