【发布时间】:2020-07-29 22:15:39
【问题描述】:
我在这里不知所措。这是我拥有的相关代码:
const TraitModal = (props) => {
const [abiltiesChecked, setAbiltiesChecked] = React.useState(new Map());
const handleAbilitiesCheck = (e) => {
var newabilitiesCH=abiltiesChecked.set(e.target.id, e.target.checked);
setAbiltiesChecked(newabilitiesCH);
};
return(
<Form>
GetAbilities().map((a) => (
<div key={`custom-${a}-2`}>
<Form.Check
custom
checked={!!abiltiesChecked.get(`abilities-${a}`)}
type="checkbox"
id={`abilities-${a}`}
label={`${a}`}
onChange={handleAbilitiesCheck.bind(this)}
/>
</div>
))}
</Form>
);
}
据我了解,setAbiltiesChecked(newabilitiesCH) 替换了旧的 abiltiesChecked,因此会导致 React 组件重新呈现,但这根本不是发生的事情。正如我通过一些控制台日志发现的那样,状态确实得到了更新,但它没有从 handleAbilitiesCheck 函数中得到更新。
我有另一个函数,基本上是在输入到文本框时重新呈现并触发复选框的重新呈现,但我需要它们显示复选框已被实际单击,我的代码有什么错误?
【问题讨论】:
标签: javascript reactjs typescript