我在react中有一个复选框,它调用一个函数,其状态为参数。
NonRegisteringDriver.refQueue
我的违规代码就在这里:
@Override
public void run() {
threadRef = this;
while (running) {
try {
Reference<? extends ConnectionImpl> ref = NonRegisteringDriver.refQueue.remove(100);
if (ref != null) {
try {
((ConnectionPhantomReference) ref).cleanup();
} finally {
NonRegisteringDriver.connectionPhantomRefs.remove(ref);
}
}
} catch (Exception ex) {
// no where to really log this if we're static
}
}
}
然而,SetState将name解释为实际状态而不是在参数中传递的变量,在本例中是一个名为&#34; all&#34;的变量。我将如何使代码将函数解释为:
<p>
<input
type="checkbox"
name="hobbies"
checked={this.state.All}
onChange={this.checkHobbies.bind(this, "all")}
/>
All Hobbies
</p>
答案 0 :(得分:2)
checkHobbies(name) {
this.setState({
[name]: !this.state[name],
});
}
如果值传递为'all',则seState将被解释为如下。
this.setState({
all: !this.state.all
});
答案 1 :(得分:0)
使用
checkHobbies(name) {
this.setState({
[name]: !this.state[name],
});
}