我的 Vuex 商店中有一個操作,應該使用要更新的新資料呼叫 API。
我想創建一個物件,它是我商店中現有值的副本,并在不受反應性影響的情況下自由地改變它。
現在,當我Array.push()打電話時,我遇到了這個錯誤
不要在變異處理程式之外改變 vuex 存盤狀態
我怎么能以不同的方式做呢?
(我有一個吸氣劑rootState.phone.policy.currentPolicy.attributes.insured.phones來解釋這個錯誤)。
async [PolicyActionTypes.UPDATE_POLICY](
{ rootState },
payload: UpdatePolicyPayload
) {
const newPolicy: Policy = {
...rootState.phone.policy.currentPolicy,
};
const newPhone: Phone = {
imei: '123',
brand: 'Samsung',
};
newPolicy.attributes.insured.phones.push(newPhone);
// Fake async API call
api.updatePolicy(newPolicy)
},
uj5u.com熱心網友回復:
當你傳播時,你正在制作一個淺拷貝,因此你仍然參考舊物件。
當你改變物件時,你認為它是一個深拷貝,而它仍然是舊的。
關于我的答案的更多資訊在這里。
TLDR:cloneDeep確實是去這里的方式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/385867.html
