vue3+pinia存储对象赋值踩坑

news/2024/7/10 1:09:16 标签: uni-app, vue

vue3pinia_0">vue3+pinia存储对象赋值踩坑

自我记录
前文描述:大概就是我在本地存储里面的对象obj1 里面的属性名 和我页面赋值 obj的属性名一致,我就直接赋值了,而没有一一对应去赋值,此时出现一个bug,就是因为我obj的对象是v-model双向数据绑定的input值,当我第一次改完触发保存存储时,下次在进入这个页面,先判断如果obj存在就赋值,问题来了,赋值之后我改input,本地存储的数据也变了

大概就是下面这样

// 例如  obj是
const salaryForm = ref({
  base: 0,
  deduct: 0,
  merit: 0,
  other: 0,
  subsidy: 0,
})
// obj1是
const salaryInfo = ref()
const setSalaryInfo = (v) => {
     salaryInfo.value = v
}
// 给obj1赋值
addInfoStore.setSalaryInfo(salaryForm.value)

// 页面回显的时候
if(addInfoStore.salaryInfo){
	salaryForm.value = addInfoStore.salaryInfo // 错误写法
}
// 正确写法
if(addInfoStore.salaryInfo){
    salaryForm.value.base = addInfoStore.salaryInfo.base
    salaryForm.value.deduct = addInfoStore.salaryInfo.deduct
    salaryForm.value.subsidy = addInfoStore.salaryInfo.subsidy
    salaryForm.value.merit = addInfoStore.salaryInfo.merit
    salaryForm.value.other = addInfoStore.salaryInfo.other
}
// 解构赋值的写法更优雅
if(addInfoStore.salaryInfo){
	const { base, deduct, subsidy, merit, other } = addInfoStore.salaryInfo
	salaryForm.value = { base, deduct, subsidy, merit, other }
}

记录问题:语法上没有区别,都是给salaryForm.value赋值。但是作用域上有些区别,根据你的赋值方式,可以清楚地知道每个属性的值从哪里来。此外,如果你需要更新多个属性,使用解构赋值的方式会更加清晰和简洁。而如果使用的是对象赋值的方式,那么对象中的所有属性都会被更新,可能不是你期望的行为。
具体涉及到堆栈http://t.csdnimg.cn/hOg2y


http://www.niftyadmin.cn/n/5224280.html

相关文章

第四阶|自在行草 暄桐教室,林曦书法 从书法之美到生活之美

我这有很多的课程,需要了可以取用 新一期(入门课),目前已经更新完毕。 新一期(第一阶),目前已经更新完毕。 新一期(第二阶),目前已经更新完毕。 新一期&#…

比尔盖茨:GPT-5不会比GPT-4好多少,生成式AI已达到极限

比尔盖茨一句爆料,成为机器学习社区热议焦点: “GPT-5不会比GPT-4好多少。” 虽然他已不再正式参与微软的日常运营,但仍在担任顾问,并且熟悉OpenAI领导团队的想法。 消息来自德国《商报》(Handelsblatt)对…

ER图-重新学习与应用实践

1.应用场景 主要用于利用ER图快速实现项目需求开发实现. 2.学习/操作 1.文档阅读 chatgpt & 其他资料 ER图-相关 ER 图是什么?这一篇让你搞懂 ER 图!_数据分析_产品海豚湾_InfoQ写作社区 2.整理输出 2.1 是什么 ER 图也称实体-联系图(Entity Relat…

深信服防火墙设置应用控制策略(菜鸟必看)

PS:前几天发布了关于深信服防火墙路由部署的流程:深信服防火墙路由模式开局部署-手把手教学(小白篇)-CSDN博客 昨天晚上有csdn的朋友联系我,说有一个关于ACL访问的问题要帮忙看一下 解决了以后,写个大概的…

linux常见命令合集

layout: post # 使用的布局(不需要改) title: linux使用命令合集 # 标题 subtitle: linux常用命令 #副标题 date: 2023-11-20 # 时间 author: BY ThreeStones1029 # 作者 header-img: img/about_bg.jpg #这篇文章标题背景图片 catalog: true # 是否归档 …

SpringBoot : ch11 整合RabbitMQ

前言 在当今的互联网时代,消息队列成为了构建高可靠、高性能系统的重要组件之一。RabbitMQ作为一个可靠、灵活的消息中间件,被广泛应用于各种分布式系统中。 本篇博客将介绍如何使用Spring Boot整合RabbitMQ,实现消息的发送和接收。通过这种…

网站定制开发对企业的好处|软件app小程序搭建

网站定制开发对企业的好处|软件app小程序搭建 在当今数字化的时代,拥有一个专属于自己企业的网站已经成为了一种趋势。而与此同时,网站定制开发作为一种针对企业需求量身定制的解决方案,也越来越受到企业的关注和青睐。那么,网站定…

福州大学《嵌入式系统综合设计》 实验八:FFMPEG视频编码

一、实验目的 掌握使用算能平台进行视频编码的流程,包括开发主机环境与云平台的配置,视频编码程序的编写与理解,代码的编译、运行以及学习使用码流分析工具分析视频压缩码流等。 二、实验内容 搭建实验开发环境,编译并运行编码…