【发布时间】:2020-04-09 20:49:30
【问题描述】:
我一直在寻找不同的答案,但它们都与 jQuery 相关,或者对于我的想法来说非常复杂? 我正在使用一个表单,并希望当用户选中一个框时,它的值应该添加到存储父组件中信息的数组中。 如果未选中框,则从数组中删除该项目。
为简单起见修剪了代码
const Knowledge = (props) => {
const checkHandler = (e) => {
const tools = props.data.usesTools; //Array in parent component
const value = e.target.value; //Checkbox value
tools.includes(value) //If Array contains value
? tools.filter((tool) => tool.value != value) // Then remove item from Array
: tools.push(value) // Else, push item to Array;
};
return (
<div>
<label>
<input
type="checkBox"
name="usesTools"
value="Slack"
onChange={checkHandler}
/>
Slack
</label>
</div>
//Other checkboxes removed for simplicity
)
}
问题:
1) 如果复选框被选中/未选中,如何向数组添加/删除项目。
2) 我尝试添加一个钩子来选中/取消选中该框,但它会在调用处理程序后立即选中所有框:
const [ isSelected, setSelected = useState(false);
<input
type="checkBox"
name="usesTools"
value="Slack"
onChange={checkHandler}
checked={isSelected}
/>
【问题讨论】:
标签: javascript arrays reactjs react-hooks