I have an array of objects in my react js app and I want to dynamically modify an inner object of my array; below is my array:
sections: [
{
id: 'e9904688-fd8a-476d-8f46-930bc4d888d1',
name: 'sec-e9904688-fd8a-476d-8f46-930bc4d888d1',
rows: [
{
id: '2f1bc178-d2bf-4283-ae9c-868513af789f',
name: 'row-2f1bc178-d2bf-4283-ae9c-868513af789f',
cols: [
{
id: 'e0a56604-196a-4dcc-a04e-a56968a2f8aa',
name: 'col-e0a56604-196a-4dcc-a04e-a56968a2f8aa',
isEmpty: false,
size: {
lg: { i: "col-e0a56604-196a-4dcc-a04e-a56968a2f8aa", x: 0, y: 0, w: 5, h: 4 },
md: { i: "col-e0a56604-196a-4dcc-a04e-a56968a2f8aa", x: 0, y: 0, w: 5, h: 4 },
sm: { i: "col-e0a56604-196a-4dcc-a04e-a56968a2f8aa", x: 0, y: 0, w: 5, h: 4 },
xs: { i: "col-e0a56604-196a-4dcc-a04e-a56968a2f8aa", x: 0, y: 0, w: 5, h: 4 },
xxs: { i: "col-e0a56604-196a-4dcc-a04e-a56968a2f8aa", x: 0, y: 0, w: 5, h: 4 }
},
controles: [
{
id: '37619580-6ba6-4058-a39b-2d57d23007d6',
name: 'control name',
type: 'control type',
options: [
{},
{}
]
}
]
},
{
id: 'adad03c8-60f3-4db1-8c6c-a125bbd7f114',
name: 'col-adad03c8-60f3-4db1-8c6c-a125bbd7f114',
isEmpty: false,
size: {
lg: { i: "col-adad03c8-60f3-4db1-8c6c-a125bbd7f114", x: 6, y: 0, w: 7, h: 4 },
md: { i: "col-adad03c8-60f3-4db1-8c6c-a125bbd7f114", x: 6, y: 0, w: 7, h: 4 },
sm: { i: "col-adad03c8-60f3-4db1-8c6c-a125bbd7f114", x: 6, y: 0, w: 7, h: 4 },
xs: { i: "col-adad03c8-60f3-4db1-8c6c-a125bbd7f114", x: 6, y: 0, w: 7, h: 4 },
xxs: { i: "col-adad03c8-60f3-4db1-8c6c-a125bbd7f114", x: 6, y: 0, w: 7, h: 4 }
},
controles: [
{
id: '37619580-6ba6-4058-a39b-2d57d23007d6',
name: 'control name',
type: 'control type',
options: [
{},
{}
]
}
]
}
]
}
]
}
]
for example I want to change the cols that has same value in lg size with this {w: 1, h: 4, x: 0, y: 0, i: "col-e0a56604-196a-4dcc-a04e-a56968a2f8aa"} with lodash; can anyone help me how to do that?
You can use immer if it is possible for you, you can checkout the doc page here
It will create a draft state and update the new object, without updating the main object.
import produce from "immer";
const baseState = [
{
name: 'Swaraj',
suname: 'Gandhi'
},
{
name: 'Dhruva',
surname: 'Dave'
},
];
const nextState = produce(baseState, (draftState) => {
draftState.push({ name: 'Ayush', surname: 'Kapoor' });
draftState[1].suname = 'test';
});
// nextState = [{ name: 'Swaraj', suname: 'Gandhi' }, { name: 'Dhruva', surname: 'test'}, { name: 'Ayush', surname: 'Kapoor' }]
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.