Tenho dois estados, um tem categorias e o outro tem itens.
tudo o que preciso é de um estado final que combine os dois estados, seja fundindo um no outro ou criando um terceiro estado.
o estado das categorias se parece com isto:
{
category1: { items: [] },
category2: { items: [] }
}
e o segundo estado é uma matriz de itens e se parece com isto:
[
{"id": "1", itemInfo: { name: "itemName", category: "category1" }},
{"id": "2", itemInfo: { name: "itemName", category: "category1" }},
{"id": "3", itemInfo: { name: "itemName", category: "category2" }},
{"id": "4", itemInfo: { name: "itemName", category: "category1" }},
{"id": "5", itemInfo: { name: "itemName", category: "category2" }},
{"id": "6", itemInfo: { name: "itemName", category: "category2" }}
]
preciso que seja assim:
{
category1: { items: [
{"id": "1", itemInfo: { name: "itemName", category: "category1" }},
{"id": "2", itemInfo: { name: "itemName", category: "category1" }},
{"id": "4", itemInfo: { name: "itemName", category: "category1" }}
]},
category2: { items: [
{"id": "3", itemInfo: { name: "itemName", category: "category2" }},
{"id": "5", itemInfo: { name: "itemName", category: "category2" }},
{"id": "6", itemInfo: { name: "itemName", category: "category2" }}
]}
}
ajuda. por favor.
foi isso que tentei e não funcionou, ou duplica as categorias e acabo com 3 "categoria1" e 3 "categoria2" ou os novos itens substituem os itens anteriores.
const newFinalList = items.map((item: any) => {
return {[item.itemInfo.category]: {items: [item]}}
})
setFinalState((prevObj: any) => ({ ...prevObj, ...newFinalList }))