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
相关推荐
王哲晓6 分钟前
第三十章 章节练习商品列表组件封装
前端·javascript·vue.js
fg_4119 分钟前
无网络安装ionic和运行
前端·npm
理想不理想v11 分钟前
‌Vue 3相比Vue 2的主要改进‌?
前端·javascript·vue.js·面试
酷酷的阿云21 分钟前
不用ECharts!从0到1徒手撸一个Vue3柱状图
前端·javascript·vue.js
微信:1379712058723 分钟前
web端手机录音
前端
齐 飞28 分钟前
MongoDB笔记01-概念与安装
前端·数据库·笔记·后端·mongodb
神仙别闹1 小时前
基于tensorflow和flask的本地图片库web图片搜索引擎
前端·flask·tensorflow
aPurpleBerry1 小时前
JS常用数组方法 reduce filter find forEach
javascript
GIS程序媛—椰子2 小时前
【Vue 全家桶】7、Vue UI组件库(更新中)
前端·vue.js
DogEgg_0012 小时前
前端八股文(一)HTML 持续更新中。。。
前端·html