我正在尝试重新渲染下面组件的选中状态,即使 isChecked 状态为 false,useState 也没有更新为设置的 prop 值,而是保持旧状态。
const CheckListItem = ({ label, onChangeEventHandler, isChecked, index }) => {
const [checked, setChaecked] = useState(isChecked || false);
console.log(`${label} checked => `, isChecked); \\ false
console.log(`${label} checked => `, checked); \\ true || maintaining the old state.
const localOnChangeHandler = (ev) => {
if (typeof onChangeEventHandler === "function") {
setChaecked(ev.target.checked);
onChangeEventHandler(index, ev.target.checked);
}
};
useEffect(() => {
console.log(`in useEffect ${label} checked => `, isChecked);
setChaecked(isChecked);
}, [isChecked, label]);
return (
<li key={index}>
<label>
<input
type="checkbox"
checked={checked}
onChange={localOnChangeHandler}
/>
{label}
</label>
</li>
);
};
checked
应该具有在isChecked
属性中设置的正确值