在某些情況下,需要重新使用data中的數據,但是data中的數據已經被各種表單、變量等賦值,那么怎么重置data的值呢?
1. 逐個賦值
1
2
3
4
5
6
7
8
9
10
11
12
13
|
... data() { return { name: '' , sex: '' , desc: '' } } ... // 逐個賦值 this .name = '' this .sex = '' this .desc = '' |
這個方法比較笨,當然也可以實現效果,但是一個一個去重新賦值比較麻煩而且代碼看起來也會比較亂。
下面這個方法肯定是你喜歡的,一行代碼搞定~
2. 使用Object.assign()
MDN關于該方法的介紹:Object.assign() 方法用于將所有可枚舉屬性的值從一個或多個源對象復制到目標對象。它將返回目標對象。
用法: Object.assign(target, ...sources)
第一個參數是目標對象,第二個參數是源對象,就是將源對象屬性復制到目標對象,返回目標對象
其中就是將一個對象的屬性copy到另一個對象
vue中:
this.$data 獲取當前狀態下的data
this.$options.data() 獲取該組件初始狀態下的data
所以,下面就可以將初始狀態的data復制到當前狀態的data,實現重置效果:
1
|
Object.assign( this .$data, this .$options.data()) |
當然,如果你只想重置data中的某一個對象或者屬性:
1
|
this .form = this .$options.data().form |
擴展
Object.assign(target, ...sources) 方法還可以用來合并對象:
1
2
3
4
5
6
|
const o1 = { a: 1 }; const o2 = { b: 2 }; const o3 = { c: 3 }; const obj = Object.assign(o1, o2, o3); console.log(obj); // { a: 1, b: 2, c: 3 } console.log(o1); // { a: 1, b: 2, c: 3 }, 注意目標對象自身也會改變。 |
如果對象中含有相同屬性,取最后一個屬性:
1
2
3
4
5
|
const o1 = { a: 1, b: 1, c: 1 }; const o2 = { b: 2, c: 2 }; const o3 = { c: 3 }; const obj = Object.assign({}, o1, o2, o3); console.log(obj); // { a: 1, b: 2, c: 3 } 屬性取最后一個對象的屬性 |
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。如有錯誤或未考慮完全的地方,望不吝賜教。
原文鏈接:https://blog.csdn.net/weixin_42054155/article/details/99889910