#javascript #reactjs
Вопрос:
Я пытаюсь добавить массив и объект в массив.
Это мой конструктор
const [dashboard, setDashboard] = useState({ loading: true, data: [], address: '' })
и вот как я хотел, чтобы данные оказались в конечном итоге
{
loading: true,
data: [{id: 0, name: 'A'}, {id: 1, name: 'B'}],
address: 'xxx'
}
Кажется, я не могу этого понять, и мне удалось добавить только массивы, но не другие объекты, такие как loading
и address
с чем-то подобным, но это не то, что мне нужно, и я просто привожу пример того, что я пытался сделать:
конструктор этого в нижней части отличается от того, что я хочу использовать, я использовал что-то вроде этого
const [dashboard, setDashboard] = useState([])
setDashboard((prev) => {
return [...prev, newData]
})
Ответ №1:
Если я правильно понимаю вашу проблему, вы пытаетесь сделать что-то вроде этого:
setDashbaord(prevDashboard => ({ ...prevDashboard, address: "xxx", data: [...prevDashboard.data, newData] }));
Это то, что вы ищете?
Комментарии:
1. да!! Спасибо!!
Ответ №2:
const [dashboard, setDashboard] = useState({ loading: true, data: [], address: '' })
Строка выше выглядит великолепно, никаких проблем нет.
setDashboard((prev) => {
return [...prev, newData]
})
Это приведет к тому, что ваша dashboard
переменная станет массивом, и это определенно не то, что вы сказали, что хотели.
setDashboard((prev) => {
return {
...prev,
data: [...prev.data, ...newData] // <-- assuming new data is an array
}
})
В зависимости от того newData
, как это выглядит, вам может потребоваться вручную объединить данные в ваш предыдущий объект данных. Например, если вы хотите убедиться, что в массиве нет повторяющихся значений, или вам нужно их отсортировать.
Комментарии:
1. да, ты все понял правильно! Спасибо! <3