флажки реагировать на ввод - не переключаться с изменением состояния - PullRequest
0 голосов
/ 01 марта 2020

У меня проблемы с получением группы флажков для переключения с изменениями в состоянии. Я отображаю флажки с использованием array.map и возвращаю элементы ввода.

Похоже, моя функция handleUpdateCheck обновляет состояние соответствующим образом, но DOM не выполняет повторную визуализацию.

const [checked, updateChecked] = useState([true, true, true, false, false]);

function handleUpdateChecked(index) {
    let newArr = checked;
    newArr[index] = !checked[index]
    updateChecked(newArr);
}

checked.map((box, index) => {
    return (
        <input
            key={index}
            type='checkbox'
            checked={checked[index]}
            onChange ={() => handleUpdateChecked(index)}
        />
    )
})


Спасибо

1 Ответ

0 голосов
/ 01 марта 2020

Я считаю, что проблема, с которой вы сталкиваетесь, заключается в том, что вы непреднамеренно изменяете состояние. Один из способов предотвратить это - создать поверхностную копию массива checked с помощью оператора распространения.

const [checked, updateChecked] = useState([true, true, true, false, false]);

function handleUpdateChecked(index) {
    let newArr = [...checked];
    newArr[index] = !checked[index]
    updateChecked(newArr);
}

checked.map((box, index) => {
    return (
        <input
            key={index}
            type='checkbox'
            checked={checked[index]}
            onChange ={() => handleUpdateChecked(index)}
        />
    )
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...