Reputation: 23
I need to append new values to an array that is inside a useState
hook, here is the interface and hook:
interface ObjetoAdicionaItem {
tipo: string;
nome: string;
borda: string;
pratos: number;
observacao: string;
quantidade: [{
pronome: string;
quantidadeSabor: number;
}];
}
Here is the hook:
const [arrayItens, setArrayItens] = useState<ObjetoAdicionaItem>();
const [sabores, setSabores] = useState<DadosSabor[]>([]);
The problem is when I try to append new items to the array quantidade
;
Sample code:
sabores = [{
quantidadeSabor: 1,
pronome: "foo",
preco: "bar",
checked: false
},
{
quantidadeSabor: 2
pronome: "foo2",
preco: "bar",
checked: false
}
]
let nome = sessionStorage.getItem("pronomeAtualSabor") || "";
sabores.map(item => {
if (item.quantidadeSabor !== 0 && item.quantidadeSabor !== undefined) {
setArrayItens({
borda: bordaAtual,
nome: nome,
observacao: observacao,
pratos: quantidadePratos,
tipo: "sabor",
quantidade: [{ ...arrayItens ? .quantidade,
pronome : item.pronome,
quantidadeSabor: item.quantidadeSabor
}]
});
}
})
expected output:
arrayItens: {
borda: 'foo',
nome: "bar",
observacao: "...",
pratos: 5,
tipo: "sabor",
quantidade: [
{
pronome: "foo",
quantidadeSabor: 1
},
{
pronome: "foo2",
quantidadeSabor: 2
}
]
}
Upvotes: 0
Views: 1253
Reputation: 43166
If I understood correctly, your code should be something like this:
setArrayItens((prevArrayItens) => ({
...prevArrayItens,
quantidade: sabores.map(({pronome, quantidadeSabor}) => quantidadeSabor && {
pronome,
quantidadeSabor
})
})
const sabores = [{
quantidadeSabor: 1,
pronome: "foo",
preco: "bar",
checked: false
},
{
quantidadeSabor: 2,
pronome: "foo2",
preco: "bar",
checked: false
}
]
const result = sabores.map(({
pronome,
quantidadeSabor
}) => quantidadeSabor && {
pronome,
quantidadeSabor
});
console.log(result);
Upvotes: 3