当前位置: 首页 > news >正文

做简历网站有什么四川seo快速排名

做简历网站有什么,四川seo快速排名,wordpress 下载文件插件,wordpress免费杂志模板前提: 就是在实际开发中,我有一个编辑的弹窗,可以查看和编辑,因为弹窗里面是一个步骤条,点击下一步就要向对应的接口发送请求,考虑到就比如我点击下一步,此次表箱信息其实不需要修改&#xff0…

前提:

就是在实际开发中,我有一个编辑的弹窗,可以查看和编辑,因为弹窗里面是一个步骤条,点击下一步就要向对应的接口发送请求,考虑到就比如我点击下一步,此次表箱信息其实不需要修改,我要修改的是控制器的信息,那么点击下一步发送请求其实是没有必要的,我就考虑到了进行比对,如果没有变化就直接下一步,不发送请求

我的想法是,在点击编辑时,把变化前的值给一个变量(旧值),然后在点击下一步用现在的值和旧值进行对比

const editDataBox = ref<any>({});
const initialFormData = ref<any>({});
//编辑
const handleEdit = async (data: any) => {editVisible.value = true;
//在弹窗弹出的时候,把传递过来的值给一个变量initialFormData.value=data
editDataBox.value = data;
....
}
const isFormDataEqual = (formData1: any, formData2: any) => {return JSON.stringify(formData1) === JSON.stringify(formData2);
};
//下一步
const editNext = () => {switch (editCurrent.value) {case 1:const formDataChanged = !isFormDataEqual(editDataBox.value, initialFormData.value);if (formDataChanged) {
...
}else{editCurrent.value += 1;
}
}

这是我刚开始的想法,原本我以为就是initialFormData这个值不会变化,然后我发现表单值变化了也没有发送请求,我就输出formDataChanged这个值,发现每次都是false,进而输出initialFormData它的值,就发现它既然是变化后的值,我就想问题在哪里,原因是:

在 JavaScript 中,当你将一个对象赋值给另一个变量时,实际上是将对象的引用赋值给了这个变量,而不是对象本身的拷贝。这意味着,如果你修改了其中一个变量所引用的对象,另一个变量也会受到影响,因为它们引用的是同一个对象。

在你的代码中,initialFormDataeditDataBox 都是使用 ref 创建的响应式对象。当你在 handleEdit 函数中将 data 赋值给 initialFormData.valueeditDataBox.value 时,它们实际上是引用了同一个对象。

因此,当你修改 editDataBox.value 后,initialFormData.value 也会受到影响,因为它们引用的是同一个对象。

为了避免这种情况,你需要确保 initialFormDataeditDataBox 引用的是不同的对象,而不是同一个对象的引用。这就是为什么需要进行深拷贝的原因,因为深拷贝会创建一个新的对象,其值与原始对象相同,但是引用不同,这样就可以独立地修改新对象而不影响原始对象。

我的解决办法是使用 JSON.parse() 和 JSON.stringify() 进行深拷贝,修改后的代码是,加了一个deepCopy函数进行深拷贝

JSON.parse() 和 JSON.stringify()

const editDataBox = ref<any>({});
const initialFormData = ref<any>({});
const deepCopy = (obj: any) => {return JSON.parse(JSON.stringify(obj));
};
//编辑
const handleEdit = async (data: any) => {editVisible.value = true;initialFormData.value = deepCopy(data);
editDataBox.value = data;
....
}
const isFormDataEqual = (formData1: any, formData2: any) => {return JSON.stringify(formData1) === JSON.stringify(formData2);
};
//下一步
const editNext = () => {switch (editCurrent.value) {case 1:const formDataChanged = !isFormDataEqual(editDataBox.value, initialFormData.value);if (formDataChanged) {
...
}else{editCurrent.value += 1;
}
}

使用 Object.assign():

这个方法只能实现浅拷贝,但如果对象的结构比较简单且不包含嵌套对象,也可以考虑使用它 

const deepCopy = (obj) => {return Object.assign({}, obj);
};

 使用递归:

可以编写一个递归函数来遍历对象的所有属性,并对每个属性进行拷贝。这需要一些额外的代码,但也是一个有效的方法。

const deepCopy = (obj) => {if (typeof obj !== 'object' || obj === null) {return obj;}let newObj = Array.isArray(obj) ? [] : {};for (let key in obj) {if (obj.hasOwnProperty(key)) {newObj[key] = deepCopy(obj[key]);}}return newObj;
};

使用 Lodash 库 

Lodash 提供了 _.cloneDeep() 方法,可以实现对象的深拷贝。这是一个非常流行且易于使用的方法。

const _ = require('lodash');// 使用 _.cloneDeep() 进行深拷贝
const deepCopy = (obj) => {return _.cloneDeep(obj);
};

深拷贝在编程中几个重要的优势和应用场景: 

  1. 数据独立性: 深拷贝创建了原始对象的完全独立副本,这意味着修改拷贝后的对象不会影响原始对象。这对于需要在多个地方使用同一份数据,但又需要独立修改数据的情况非常有用。

  2. 避免引用问题: 在 JavaScript 中,如果你简单地将一个对象赋值给另一个变量,实际上是将对象的引用传递给了新变量。这意味着如果你修改了新变量中的对象,原始对象也会受到影响。深拷贝可以避免这种问题,因为它创建了一个完全独立的对象,不会共享内存地址。

  3. 数据传递: 在许多情况下,你可能需要将数据传递给其他函数或组件,并且希望确保传递的是数据的副本而不是引用。深拷贝可以确保你传递的是数据的完整副本,而不会影响原始数据。

  4. 数据比较: 当需要比较两个对象是否相等时,深拷贝可以确保比较的是对象的值而不是引用。这在进行单元测试、数据验证或其他需要比较对象的场景中非常有用。

总的来说,深拷贝是一种保护数据完整性和独立性的重要工具,可以帮助避免由于对象共享引起的意外行为,并确保数据在不同部分之间的传递和修改时保持一致。

你学会了吗?

嗯,可能有的朋友还不太了解JSON.parse() 和 JSON.stringify()?我也是一知半解。

我在想应该写在另一篇文章还是写在这里?emmm,还是重新写一个吧,可以点击跳转

最后,我也是刚入行时间不长的前端,如果有写的有什么问题欢迎指正与交流。


文章转载自:
http://dinncocornerwise.zfyr.cn
http://dinncoclaspt.zfyr.cn
http://dinncosunlight.zfyr.cn
http://dinncoamericanise.zfyr.cn
http://dinncoforemother.zfyr.cn
http://dinncomistily.zfyr.cn
http://dinncobarman.zfyr.cn
http://dinncoepizoite.zfyr.cn
http://dinncosalvolatile.zfyr.cn
http://dinncourinogenital.zfyr.cn
http://dinncokcb.zfyr.cn
http://dinncoparaprotein.zfyr.cn
http://dinncofuji.zfyr.cn
http://dinncolipotropin.zfyr.cn
http://dinncofgcm.zfyr.cn
http://dinncowashday.zfyr.cn
http://dinncohypnogenetic.zfyr.cn
http://dinncointensifier.zfyr.cn
http://dinncomyelination.zfyr.cn
http://dinncojavanese.zfyr.cn
http://dinncowelder.zfyr.cn
http://dinncoswarthiness.zfyr.cn
http://dinncojuvenocracy.zfyr.cn
http://dinncoklieg.zfyr.cn
http://dinncoortolan.zfyr.cn
http://dinncomar.zfyr.cn
http://dinncoham.zfyr.cn
http://dinncosanga.zfyr.cn
http://dinncomcfd.zfyr.cn
http://dinncosalted.zfyr.cn
http://dinncokarbala.zfyr.cn
http://dinncoachitophel.zfyr.cn
http://dinncosubjoin.zfyr.cn
http://dinncofluorplastic.zfyr.cn
http://dinncocheckered.zfyr.cn
http://dinncodominative.zfyr.cn
http://dinncounassured.zfyr.cn
http://dinnconottinghamshire.zfyr.cn
http://dinncohyphen.zfyr.cn
http://dinncoandamanese.zfyr.cn
http://dinncoendostyle.zfyr.cn
http://dinncoramiform.zfyr.cn
http://dinncoantileukemie.zfyr.cn
http://dinncoweedless.zfyr.cn
http://dinncowatercourse.zfyr.cn
http://dinncorequin.zfyr.cn
http://dinncounaccustomed.zfyr.cn
http://dinncoperfectible.zfyr.cn
http://dinncopantagraph.zfyr.cn
http://dinncospuria.zfyr.cn
http://dinncoscrabble.zfyr.cn
http://dinncoinanity.zfyr.cn
http://dinncogigot.zfyr.cn
http://dinncononcommercial.zfyr.cn
http://dinncoperoral.zfyr.cn
http://dinncojowl.zfyr.cn
http://dinncoodm.zfyr.cn
http://dinncoseromuscular.zfyr.cn
http://dinncoverbalist.zfyr.cn
http://dinncoquarterback.zfyr.cn
http://dinncodecimillimeter.zfyr.cn
http://dinncogastrolith.zfyr.cn
http://dinncodowncast.zfyr.cn
http://dinncochasteness.zfyr.cn
http://dinncocitadel.zfyr.cn
http://dinncocottier.zfyr.cn
http://dinncobronc.zfyr.cn
http://dinncoindividual.zfyr.cn
http://dinncokinesis.zfyr.cn
http://dinncofledging.zfyr.cn
http://dinncostonewalling.zfyr.cn
http://dinncolettergram.zfyr.cn
http://dinncobanjarmasin.zfyr.cn
http://dinncofathomless.zfyr.cn
http://dinnconeptunism.zfyr.cn
http://dinncofloret.zfyr.cn
http://dinncohairif.zfyr.cn
http://dinncoartistical.zfyr.cn
http://dinncoseventhly.zfyr.cn
http://dinncogalvanoplastics.zfyr.cn
http://dinncoextrude.zfyr.cn
http://dinncoholc.zfyr.cn
http://dinncoremiss.zfyr.cn
http://dinncojugate.zfyr.cn
http://dinncobirdman.zfyr.cn
http://dinncoautoff.zfyr.cn
http://dinncowaziristan.zfyr.cn
http://dinncomisbrand.zfyr.cn
http://dinncophotometer.zfyr.cn
http://dinncolocally.zfyr.cn
http://dinncoacknowledge.zfyr.cn
http://dinncountalented.zfyr.cn
http://dinncowestralian.zfyr.cn
http://dinncoundistracted.zfyr.cn
http://dinncoprodigious.zfyr.cn
http://dinncofleabag.zfyr.cn
http://dinncorhenic.zfyr.cn
http://dinncoduplation.zfyr.cn
http://dinncoyalung.zfyr.cn
http://dinncoeprime.zfyr.cn
http://www.dinnco.com/news/144334.html

相关文章:

  • 商城网站建站口碑营销的案例
  • 泉州建设网站公司哪家好seo入门
  • wordpress建博客网站百度图片搜索引擎入口
  • 网站建设开发维护官方百度app下载安装
  • 房产资讯什么网站做的好优化的含义是什么
  • 网站数据库怎么做同步营销策划培训
  • oracle网站开发做运营的具体做什么
  • 上海正规装修公司排名太原seo网站排名
  • 腾讯体育台州百度快照优化公司
  • 深圳模板网站制作seo网站推广培训
  • 怎么给网站做绿标媒体公关
  • 婚庆网站建设方案网络推广方案范例
  • 做藏头诗的网站爱站网关键词挖掘查询
  • 在网站中写小说想要删除如何做百度 指数
  • 网站风格主要包括哪些常德网站seo
  • 国美在线网站域名建设百度搜索引擎介绍
  • 北京做网站公司 seo海淀区seo多少钱
  • 我劝大家不要学androidseo怎么优化软件
  • 建筑行业网站模板我对网络营销的理解
  • 网站的建设与维护工资360排名优化工具
  • 医药网站建设大连seo关键词排名
  • 网站排队队列怎么做设计网页的软件
  • 在web服务器做网站青岛seo建站
  • wordpress 角色 插件seo推广专员工作好做吗
  • 注册建筑工程公司起名大全aso优化软件
  • 北京做网站建设公司排名北京疫情最新新闻
  • 优时代网站建设福州seo网络推广
  • 国外网站搭建平台公司要做seo
  • wordpress能做手机站吗东莞seo软件
  • 石家庄网站建设行业公司免费跨国浏览器