欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue對象拷貝,解決由于引用賦值修改原對象的方式

 更新時(shí)間:2023年10月18日 09:58:41   作者:qq_41831968  
這篇文章主要介紹了vue對象拷貝,解決由于引用賦值修改原對象的方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue對象拷貝,解決由于引用賦值修改原對象

在vue項(xiàng)目中,遇到了一個(gè)問題,前端需要將后臺返回的數(shù)據(jù)展示在界面上,但是由于多了一個(gè)修改功能,點(diǎn)擊修改按鈕會彈出一個(gè)彈框,彈框所有要修改的內(nèi)容和之前展示的一樣,在彈框里修改原來界面的值也會一起變化,這顯然不太合適(問題不好描述,直接上代碼吧)

<!-- 展示的界面-->
<el-form-item label="手機(jī)號">
 <el-input v-model="form.account"></el-input>
</el-form-item>
<!-- 修改的彈框-->
<el-dialog>
 <el-form-item label="手機(jī)號">
  <el-input v-model="form.account"></el-input>
  <el-input v-model="newForm.account"></el-input>
 </el-form-item>
</el-dialog>
export default {
 data() {
  return {
   form: {},
   newForm:{}
  }
 },
 methods: {
  request() { 
   //這里是請求的方法,懶得寫了,因?yàn)榉祷氐臄?shù)據(jù)才是要處理的重點(diǎn)
   this.$post('xxx/xxxx',params)
    .then(res=>{
      //將返回的數(shù)據(jù)直接賦值給form,然后直接在界面上展示
      this.form = res;
      //這時(shí)候問題就來了,因?yàn)閺椏蛞薷牡膬?nèi)容也是同樣的數(shù)據(jù),如果使用同一個(gè)對象this.form,
      //那么在彈框里修改的是同一個(gè)對象
      //即使新建一個(gè)對象再用返回的數(shù)據(jù)給它賦值,結(jié)果也是相同的,因?yàn)閷ο蟮馁x值是引用賦值
      //this.newForm = res;
      //解決方法其實(shí)挺簡單,Object.assign解決,
      this.newForm = Object.assign({}, res)
      //使用上面這個(gè)方法是完全復(fù)制了一個(gè)新的對象,即使修改這個(gè)newForm也不會影響form
     })
  }
 }
}

vue踩坑--賦值后原對象的值改變

//vue定義變量data() {
   return {     //初始表格數(shù)組對象
        tableData:[],     //被賦值對象
        newlData:[]    //被賦值對象    
   }    
}

問題原因

簡單的賦值沒有創(chuàng)建一個(gè)新的對象內(nèi)存地址,只是把newlData的內(nèi)存地址指向了tableData的內(nèi)存地址,一旦tableData的內(nèi)存地址值發(fā)生改變,newlData的數(shù)據(jù)也會對應(yīng)改變。

解決辦法

方法1、創(chuàng)建一個(gè)新的對象,指向新的內(nèi)存地址,通過JSON解析

let datas = JSON.parse(JSON.stringify(this.tableData));

方法2、es6之展開Object.assign(拷貝obj的內(nèi)容到一個(gè)新的堆內(nèi)存,copyObj存儲新內(nèi)存的引用)

let datas = Object.assign({},this.tableData);

方法3、es6之展開運(yùn)算符(僅用于數(shù)組)

let copyArr = [...this.tableData];

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue單頁面應(yīng)用做預(yù)渲染的方法實(shí)例

    Vue單頁面應(yīng)用做預(yù)渲染的方法實(shí)例

    vue是一個(gè)單頁面的應(yīng)用,這導(dǎo)致一些爬蟲和百度無法搜索到,如果你想針對你應(yīng)用的其中某些頁面進(jìn)行SEO優(yōu)化,讓他們可以被爬蟲和百度搜索到,你可以進(jìn)行預(yù)渲染操作,下面這篇文章主要給大家介紹了關(guān)于Vue單頁面應(yīng)用做預(yù)渲染的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • 深入理解vue-loader如何使用

    深入理解vue-loader如何使用

    本篇文章主要介紹了vue-loader,vue-loader是webpack下loader插件 可以把.vue文件輸出成組件,有興趣的可以了解一下
    2017-06-06
  • vue將文件/圖片批量打包下載zip的教程

    vue將文件/圖片批量打包下載zip的教程

    這篇文章主要介紹了vue將文件/圖片批量打包下載zip的教程,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • websocket在vue2中的封裝使用方式

    websocket在vue2中的封裝使用方式

    這篇文章主要介紹了websocket在vue2中的封裝使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • vuex中的state屬性解析

    vuex中的state屬性解析

    這篇文章主要介紹了vuex中的state屬性,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue中使用matomo進(jìn)行訪問流量統(tǒng)計(jì)的實(shí)現(xiàn)

    Vue中使用matomo進(jìn)行訪問流量統(tǒng)計(jì)的實(shí)現(xiàn)

    這篇文章主要介紹了Vue中使用matomo進(jìn)行訪問流量統(tǒng)計(jì)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 使用vue?v-for循環(huán)圖片路徑方式

    使用vue?v-for循環(huán)圖片路徑方式

    這篇文章主要介紹了使用vue?v-for循環(huán)圖片路徑方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 詳解vuex commit保存數(shù)據(jù)技巧

    詳解vuex commit保存數(shù)據(jù)技巧

    這篇文章主要介紹了詳解vuex commit保存數(shù)據(jù)技巧,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • 淺談Vue服務(wù)端渲染框架Nuxt的那些事

    淺談Vue服務(wù)端渲染框架Nuxt的那些事

    這篇文章主要介紹了淺談Vue服務(wù)端渲染框架Nuxt的那些事,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • Vue配置環(huán)境變量的正確打開方式

    Vue配置環(huán)境變量的正確打開方式

    這篇文章主要為大家介紹了Vue配置環(huán)境變量,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01

最新評論