Т.е есть массив с кнопками, которые я отображаю. Как мне лучше реализовать disabled при ее нажатии?
Я пробовал менять переменную в массиве, но это не помогает, потому что нужно каким-то образом ререндерить, а setVar не помогает, потому что сам массив не изменился.
в объект кнопки добавить поле disabled = true/false, при нажатии менять его на true. и к кнопке добавить disabled={button.disabled}
{topics.map((item, pos) => { return ( <Button key={item.id} onClick={() => { const t = topics; t[pos].disabled = !topics[pos].disabled; setTopics(t); }} disabled={item.disabled}>{item.name}</Button> ); })} Так не работает, потому что ререндер не происходит
кнопке добавить value или id, при нажатии возвращать копию массива с измененным состоянием disabled у кнопки с данным value/id
ты здесь копируешь ссылку а не массив const t = topics;
поменяй на const t = [...topics];
const t = [...topics]; Поменял на копию, теперь работает. Спасибо за ответы! :)
Обсуждают сегодня