Я хочу установить несколько флажков на моей HTML-странице с помощью response-hook.
Я попытался реализовать, используя этот URL: https://medium.com/@Zh0uzi/my-concerns-with-react-hooks-6afda0acc672. В предоставленной ссылке это сделано с использованием компонента класса и работает отличноно всякий раз, когда я использую React-хук setCheckedItems для обновления статуса, отмеченного флажками, он не перерисовывает представление.
Самый первый раз, когда представление рендерится, а console.log () печатает из компонента Checkbox.После установки флажка вызывается функция handleChange , а checkedItems обновляет значение, но представление не визуализируется снова (печать console.log () отсутствует).И {checkItems.get ("check-box-1")} также не печатает никаких значений.
Ниже приведен мой пример кода.
CheckboxExample:
import React, { useState } from 'react';
import Checkbox from '../helper/Checkbox';
const CheckboxExample = () => {
const [checkedItems, setCheckedItems] = useState(new Map());
const handleChange = (event) => {
setCheckedItems(checkedItems => checkedItems.set(event.target.name, event.target.checked));
console.log("checkedItems: ", checkedItems);
}
const checkboxes = [
{
name: 'check-box-1',
key: 'checkBox1',
label: 'Check Box 1',
},
{
name: 'check-box-2',
key: 'checkBox2',
label: 'Check Box 2',
}
];
return (
<div>
<lable>Checked item name : {checkedItems.get("check-box-1")} </lable> <br/>
{
checkboxes.map(item => (
<label key={item.key}>
{item.name}
<Checkbox name={item.name} checked={checkedItems.get(item.name)} onChange={handleChange} />
</label>
))
}
</div>
);
}
export default Example;
Флажок :
import React from 'react';
const Checkbox = ({ type = 'checkbox', name, checked = false, onChange }) => {
console.log("Checkbox: ", name, checked);
return (<input type={type} name={name} checked={checked} onChange={onChange} /> )
}
export default Checkbox;