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

vue使用assign巧妙重置data數(shù)據(jù)方式

 更新時(shí)間:2022年03月03日 11:15:33   作者:kaiking_g  
這篇文章主要介紹了vue使用assign巧妙重置data數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

使用assign巧妙重置data數(shù)據(jù)

由于Object.assign()有上述特性,所以我們?cè)赩ue中可以這樣使用: 

Vue組件可能會(huì)有這樣的需求

在某種情況下,需要重置Vue組件的data數(shù)據(jù)。此時(shí),我們可以通過(guò)this.$data獲取當(dāng)前狀態(tài)下的data,通過(guò)this.$options.data()獲取該組件初始狀態(tài)下的data。

然后只要使用Object.assign(this.$data, this.$options.data())就可以將當(dāng)前狀態(tài)的data重置為初始狀態(tài)

重置data的數(shù)據(jù)為初始狀態(tài)

1. 逐個(gè)賦值

<span style="color:#000000"><code class="language-js"><span style="color:#99cc99">...</span>
<span style="color:#6699cc">data</span><span style="color:#999999">(</span><span style="color:#999999">)</span> <span style="color:#999999">{</span>
?? ?<span style="color:#cc99cc">return</span> <span style="color:#999999">{</span>
?? ??? ?name<span style="color:#999999">:</span> <span style="color:#99cc99">''</span><span style="color:#999999">,</span>
?? ??? ?sex<span style="color:#999999">:</span> <span style="color:#99cc99">''</span><span style="color:#999999">,</span>
?? ??? ?desc<span style="color:#999999">:</span> <span style="color:#99cc99">''</span>
?? ?<span style="color:#999999">}</span>
<span style="color:#999999">}</span>
<span style="color:#99cc99">...</span>
?
<span style="color:#999999">// 逐個(gè)賦值</span>
<span style="color:#cc99cc">this</span><span style="color:#999999">.</span>name <span style="color:#99cc99">=</span> <span style="color:#99cc99">''</span>
<span style="color:#cc99cc">this</span><span style="color:#999999">.</span>sex <span style="color:#99cc99">=</span> <span style="color:#99cc99">''</span>
<span style="color:#cc99cc">this</span><span style="color:#999999">.</span>desc <span style="color:#99cc99">=</span> <span style="color:#99cc99">''</span>
?
</code></span>

這個(gè)方法比較笨,當(dāng)然也可以實(shí)現(xiàn)效果,但是一個(gè)一個(gè)去重新賦值比較麻煩而且代碼看起來(lái)也會(huì)比較亂。

下面這個(gè)方法肯定是你喜歡的,一行代碼搞定~

2. 使用Object.assign()

MDN關(guān)于該方法的介紹:Object.assign() 方法用于將所有可枚舉屬性的值從一個(gè)或多個(gè)源對(duì)象復(fù)制到目標(biāo)對(duì)象。它將返回目標(biāo)對(duì)象。

用法: Object.assign(target, ...sources)

第一個(gè)參數(shù)是目標(biāo)對(duì)象,第二個(gè)參數(shù)是源對(duì)象,就是將源對(duì)象屬性復(fù)制到目標(biāo)對(duì)象,返回目標(biāo)對(duì)象

其中就是將一個(gè)對(duì)象的屬性copy到另一個(gè)對(duì)象

vue中:

  • this.$data 獲取當(dāng)前狀態(tài)下的data
  • this.$options.data() 獲取該組件初始狀態(tài)下的data

所以,下面就可以將初始狀態(tài)的data復(fù)制到當(dāng)前狀態(tài)的data,實(shí)現(xiàn)重置效果:

Object.assign(this.$data, this.$options.data())

當(dāng)然,如果你只想重置data中的某一個(gè)對(duì)象或者屬性:

this.form = this.$options.data().form

擴(kuò)展

Object.assign(target, ...sources) 方法還可以用來(lái)合并對(duì)象:

<span style="color:#000000"><code class="language-js"><span style="color:#cc99cc">const</span> o1 <span style="color:#99cc99">=</span> <span style="color:#999999">{</span> a<span style="color:#999999">:</span> <span style="color:#f99157">1</span> <span style="color:#999999">}</span><span style="color:#999999">;</span>
<span style="color:#cc99cc">const</span> o2 <span style="color:#99cc99">=</span> <span style="color:#999999">{</span> b<span style="color:#999999">:</span> <span style="color:#f99157">2</span> <span style="color:#999999">}</span><span style="color:#999999">;</span>
<span style="color:#cc99cc">const</span> o3 <span style="color:#99cc99">=</span> <span style="color:#999999">{</span> c<span style="color:#999999">:</span> <span style="color:#f99157">3</span> <span style="color:#999999">}</span><span style="color:#999999">;</span>
?
<span style="color:#cc99cc">const</span> obj <span style="color:#99cc99">=</span> Object<span style="color:#999999">.</span><span style="color:#6699cc">assign</span><span style="color:#999999">(</span>o1<span style="color:#999999">,</span> o2<span style="color:#999999">,</span> o3<span style="color:#999999">)</span><span style="color:#999999">;</span>
console<span style="color:#999999">.</span><span style="color:#6699cc">log</span><span style="color:#999999">(</span>obj<span style="color:#999999">)</span><span style="color:#999999">;</span> <span style="color:#999999">// { a: 1, b: 2, c: 3 }</span>
console<span style="color:#999999">.</span><span style="color:#6699cc">log</span><span style="color:#999999">(</span>o1<span style="color:#999999">)</span><span style="color:#999999">;</span> ?<span style="color:#999999">// { a: 1, b: 2, c: 3 }, 注意目標(biāo)對(duì)象自身也會(huì)改變。</span>
</code></span>

如果對(duì)象中含有相同屬性,取最后一個(gè)屬性:

<span style="color:#000000"><code class="language-js"><span style="color:#cc99cc">const</span> o1 <span style="color:#99cc99">=</span> <span style="color:#999999">{</span> a<span style="color:#999999">:</span> <span style="color:#f99157">1</span><span style="color:#999999">,</span> b<span style="color:#999999">:</span> <span style="color:#f99157">1</span><span style="color:#999999">,</span> c<span style="color:#999999">:</span> <span style="color:#f99157">1</span> <span style="color:#999999">}</span><span style="color:#999999">;</span>
<span style="color:#cc99cc">const</span> o2 <span style="color:#99cc99">=</span> <span style="color:#999999">{</span> b<span style="color:#999999">:</span> <span style="color:#f99157">2</span><span style="color:#999999">,</span> c<span style="color:#999999">:</span> <span style="color:#f99157">2</span> <span style="color:#999999">}</span><span style="color:#999999">;</span>
<span style="color:#cc99cc">const</span> o3 <span style="color:#99cc99">=</span> <span style="color:#999999">{</span> c<span style="color:#999999">:</span> <span style="color:#f99157">3</span> <span style="color:#999999">}</span><span style="color:#999999">;</span>
?
<span style="color:#cc99cc">const</span> obj <span style="color:#99cc99">=</span> Object<span style="color:#999999">.</span><span style="color:#6699cc">assign</span><span style="color:#999999">(</span><span style="color:#999999">{</span><span style="color:#999999">}</span><span style="color:#999999">,</span> o1<span style="color:#999999">,</span> o2<span style="color:#999999">,</span> o3<span style="color:#999999">)</span><span style="color:#999999">;</span>
console<span style="color:#999999">.</span><span style="color:#6699cc">log</span><span style="color:#999999">(</span>obj<span style="color:#999999">)</span><span style="color:#999999">;</span> <span style="color:#999999">// { a: 1, b: 2, c: 3 } 屬性取最后一個(gè)對(duì)象的屬性</span></code></span>

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

相關(guān)文章

  • 如何使用el-table+el-tree+el-select動(dòng)態(tài)選擇對(duì)應(yīng)值

    如何使用el-table+el-tree+el-select動(dòng)態(tài)選擇對(duì)應(yīng)值

    小編在做需求時(shí),遇到了在el-table表格中加入多條數(shù)據(jù),并且每條數(shù)據(jù)要通過(guò)el-select來(lái)選取相應(yīng)的值,做到動(dòng)態(tài)選擇,下面這篇文章主要給大家介紹了關(guān)于如何使用el-table+el-tree+el-select動(dòng)態(tài)選擇對(duì)應(yīng)值的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • el-table嵌套el-popover處理卡頓的解決

    el-table嵌套el-popover處理卡頓的解決

    本文主要介紹了el-table嵌套el-popover處理卡頓的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • vue3 :deep()的使用教程

    vue3 :deep()的使用教程

    對(duì)應(yīng)前端小白來(lái)說(shuō),一看到:deep()這些模式的用法就不理解是啥意思,下面簡(jiǎn)單介紹一下:deep()是什么以及如何使用,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • Vue狀態(tài)管理庫(kù)Vuex的入門使用教程

    Vue狀態(tài)管理庫(kù)Vuex的入門使用教程

    Vuex是一個(gè)專門為Vue.js應(yīng)用程序開(kāi)發(fā)的狀態(tài)管理庫(kù)。它采用了一個(gè)集中式的架構(gòu),將應(yīng)用程序的所有組件的狀態(tài)存儲(chǔ)在一個(gè)單獨(dú)的地方。這使得狀態(tài)的管理和維護(hù)變得更加容易
    2023-03-03
  • vue項(xiàng)目中路徑使用@和~的區(qū)別及說(shuō)明

    vue項(xiàng)目中路徑使用@和~的區(qū)別及說(shuō)明

    這篇文章主要介紹了vue項(xiàng)目中路徑使用@和~的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Vue中JS動(dòng)畫與Velocity.js的結(jié)合使用

    Vue中JS動(dòng)畫與Velocity.js的結(jié)合使用

    這篇文章主要介紹了Vue中JS動(dòng)畫與Velocity.js的結(jié)合使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • vue前端實(shí)現(xiàn)打印下載示例詳解

    vue前端實(shí)現(xiàn)打印下載示例詳解

    這篇文章主要為大家介紹了vue前端實(shí)現(xiàn)打印下載示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • vue移動(dòng)端自適應(yīng)適配問(wèn)題詳解

    vue移動(dòng)端自適應(yīng)適配問(wèn)題詳解

    這篇文章主要介紹了vue移動(dòng)端自適應(yīng)適配問(wèn)題,本文通過(guò)實(shí)例代碼詳解給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-04-04
  • vue-cli下的vuex的簡(jiǎn)單Demo圖解(實(shí)現(xiàn)加1減1操作)

    vue-cli下的vuex的簡(jiǎn)單Demo圖解(實(shí)現(xiàn)加1減1操作)

    這篇文章主要介紹了vue-cli下的vuex的簡(jiǎn)單Demo(實(shí)現(xiàn)加1減1操作),本文圖文并茂給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • 基于vue+openlayer實(shí)現(xiàn)地圖聚合和撒點(diǎn)效果

    基于vue+openlayer實(shí)現(xiàn)地圖聚合和撒點(diǎn)效果

    Openlayers 是一個(gè)模塊化、高性能并且功能豐富的WebGIS客戶端的JavaScript包,用于顯示地圖及空間數(shù)據(jù),并與之進(jìn)行交互,具有靈活的擴(kuò)展機(jī)制,本文給大家介紹vue+openlayer實(shí)現(xiàn)地圖聚合效果和撒點(diǎn)效果,感興趣的朋友一起看看吧
    2021-09-09

最新評(píng)論