第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

vue從vue外部導(dǎo)入數(shù)據(jù)在組件中使用,是否需要深拷貝

vue從vue外部導(dǎo)入數(shù)據(jù)在組件中使用,是否需要深拷貝

慕森卡 2023-05-25 16:47:41
想象一下,我有一個(gè)帶有多個(gè)道具的對(duì)象,我想將其帶入各種 vue 組件的“數(shù)據(jù)”狀態(tài),作為一種起點(diǎn)或默認(rèn)狀態(tài)。我希望每個(gè)組件都能夠從初始化的那一刻起管理自己的狀態(tài)。就像是:import { initialData } from '../../some-data.js'Vue.component('my-component', {  data: function () {    return {       ...initialData,       somethingElse: 'hello there",    }  },  template: 'Hi'})Vue 是否會(huì)對(duì)該對(duì)象進(jìn)行深度復(fù)制,以便當(dāng)它因用戶交互而發(fā)生變化時(shí),原始對(duì)象(位于 some-data.js 中)將不會(huì)發(fā)生變化,或者我是否需要自己使用類似的方法來做到這一點(diǎn):import { initialData } from '../../some-data.js'Vue.component('my-component', {  data: function () {    return {       ...JSON.parse(JSON.stringify(initialData)),       somethingElse: 'hello there'    }  },  template: 'Hi'})
查看完整描述

2 回答

?
千巷貓影

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

Vue 會(huì)深拷貝這個(gè)對(duì)象嗎

拷貝?不,但是您將獲得該組件的淺表副本,因?yàn)槟趧?chuàng)建一個(gè)新對(duì)象(使用擴(kuò)展語法)。

與任何淺拷貝一樣,如果initialData包含對(duì)象,那么這些對(duì)象將不會(huì)被深拷貝,但頂層字符串和數(shù)字(等)將被拷貝。


用來JSON.parse做深拷貝是一種黑客攻擊。最好使用像 lodash 這樣的專用深拷貝方法_.cloneDeep。或者你可以只寫initialData一個(gè)工廠函數(shù):

const createInitialData = () => ({

? foo: 'bar',

? nestedObject: {

? ? blah: 12345

? }

})

data() {

? return {

? ? ...createInitialData(),

? ? somethingElse: 'hello there'

? }

}


查看完整回答
反對(duì) 回復(fù) 2023-05-25
?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊

為什么不嘗試看看會(huì)發(fā)生什么?

some-data.js在最后的文件中添加如下內(nèi)容:

setInterval(function() { console.log(initialData) }, 1000);

然后當(dāng)您導(dǎo)入它時(shí),修改一些東西并查看日志會(huì)發(fā)生什么。

不管是哪種情況,您都應(yīng)該使用 Vuex。


查看完整回答
反對(duì) 回復(fù) 2023-05-25
  • 2 回答
  • 0 關(guān)注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)