我是React的新手。在这里,我有一个选择所有元素的复选框。单击后,我调用一种方法:
handleCheckBox = (event) => {
if (event.currentTarget.checked) {
console.log("calling this");
const updates = {};
for (const item of [...this.props.untracked.content]) {
updates[item.resumeId] = "unTracked";
}
for (const item of [...this.props.tracked.content]) {
updates[item.resumeId] = "tracked";
}
this.setState(oldState => ({
selectedValue: {
...oldState.selectedValue,
...updates,
}
}, () => {
console.log("going in this");
}));
} else {
const reset = {};
this.setState({
selectedValue: {
...reset
}
})
}
}
当我单击复选框时,它将选择所有值以及它们各自的复选框。这样,going in this
将被打印在控制台中。现在,如果我单击相应的一个或两个复选框,然后尝试单击在其上调用给定方法的复选框,那么该时间不会被调用。
因此,那时没有调用call函数。因此,是否有任何原因可能导致它无法通话?
答案 0 :(得分:1)
this.setState(oldState => ({
selectedValue: {
...oldState.selectedValue,
...updates,
}
}, () => {
console.log("going in this");
}));
等同于
this.setState(oldState => () => {
console.log("going in this");
});
因为comma operator。您可能打算将两个参数传递给调用,如下所示:
this.setState(oldState => ({
selectedValue: {
...oldState.selectedValue,
...updates,
}
}), () => {
console.log("going in this");
});
请注意括号的放置方式。