[英]Javascript Redux update nested object property value
我有個問題。 如何在嵌套對象中更新我的值?
所以我的Redux狀態看起來像:
const initialState = {
elements: [],
selectedElement: {},
};
在元素數組中,我將使用如下結構存儲我的“元素”:
{
id: 3243,
elemType: 'p',
content: 'some example content',
style: {
fontSize: 30,
color: "red",
textDecoration: "underline",
fontFamily: "Arial"
}
}
而現在我想改變風格的價值觀。 也許fontSize,也許是顏色......取決於選擇哪個屬性。
我已經制作了動作創建者,它給了我這些變化的id,屬性,值..但問題是我不知道如何在reducer中准確編寫代碼:(
動作造物主
export const updateElement = (property, value, id) => {
return {
type: 'UPDATE_ELEMENT',
property,
value,
id
}
}
減速器
const {id, elemType, content, style, type, selected, property, value} = action;
case 'UPDATE_ELEMENT':
const elementForUpdate = state.elements.find(element => element.id === id);
console.log(id, property, value);
return ...?
簡而言之,你必須保持不變性 。 在您的情況下,您必須確保:
elements
數組被復制。 style
對象。 您可以使用單個map
完成所有這些操作:
case 'UPDATE_ELEMENT': {
const elements = state.elements.map(el => {
if (el.id === id) {
const style = { ...el.style, [property]: value };
return { ...el, style };
} else {
return el;
}
});
return { ...state, elements };
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.