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
相关推荐
skyWang41618 分钟前
Vite模块联邦(vite-plugin-federation)实现去中心化微前端后台管理系统架构
前端
喝拿铁写前端19 分钟前
你以为你是中级前端,其实你还停留在执行阶段-完整前端成长之路
前端
前端卧龙人25 分钟前
uniapp开发技巧:开启代理与gzip优化实践
前端
hepherd26 分钟前
Vue学习笔记 - 插件
前端·vue.js
027西瓜皮26 分钟前
使用 Leaflet.js 生成北京地铁地图(Trae实现)
前端·trae
就是我26 分钟前
3种必须知道的JavaScript异步编程模型
前端·javascript·面试
青花雅月28 分钟前
写好代码之MVVC架构模式
前端·javascript·代码规范
Huanzhi_Lin32 分钟前
webpack配置导致浏览器自动刷新
前端·javascript·webpack
原生高钙32 分钟前
万字webpack精华总结:那些面试官提问的实现原理你答上来了吗
前端·webpack
#岩王爷1 小时前
Ajax------免刷新地前后端交互
前端·javascript·ajax·php