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
相关推荐
dy171716 小时前
el-table表头上下显示内容
javascript·vue.js·elementui
q***649716 小时前
头歌答案--爬虫实战
java·前端·爬虫
凌波粒16 小时前
SpringMVC基础教程(4)--Ajax/拦截器/文件上传和下载
java·前端·spring·ajax
亮子AI16 小时前
给你的应用加上Google账号登录
javascript
液态不合群17 小时前
DDD驱动低代码开发:从业务流程到领域模型的全链路设计
前端·低代码·架构·ddd
jonyleek17 小时前
JVS低代码开发中,如何创建自定义前端页面并接入到现有系统中,从创建到接入的全攻略
前端·低代码·前端框架·软件开发
努力往上爬de蜗牛17 小时前
react native 实现选择图片或者拍照上传(多张)
javascript·react native·react.js
谢尔登17 小时前
【React】React组件的渲染过程分为哪几个阶段?
前端·javascript·react.js
MediaTea17 小时前
Python 第三方库:Flask(轻量级 Web 框架)
开发语言·前端·后端·python·flask
5***o50017 小时前
前端构建工具缓存清理,解决依赖问题
前端·缓存