>我在javascript中有以下代码,可以找出Prov的值是否为空或未定义 但不幸的是,它无法这样做,并且它能够更新Prov
的值。下面的代码有什么问题
valid = () => {
debugger;
if (!this.state.Name && !this.state.ID) {
if (!this.state.Prov) {
debugger;
this.setState({
...this.state,
Prov: 'Please enter Province...'
});
return false;
}
}
else {
return true;
}
}
在上面的代码中,状态定义如下
this.state = {
Name: null,
ID: null,
Prov: null,
}
如果您的初始状态如下
this.state = {
Name: null,
ID: null,
Prov: null,
}
您的逻辑尝试检查它是否为 null,然后添加 Prov,这将更新 Prov。 如果您不想在Prov具有错误值(null,未定义,0,NaN,false(时更新Prov,请更改此设置
if (!this.state.Prov)
自
if (this.state.Prov) {
在第一个条件中,如果您写了"stat"而不是"state",我认为它应该有效,让我们知道它是否有效
因为设置PROV后您将返回true,即使未设置名称和ID,也许?
valid = () => {
debugger;
if (!this.state.Name && !this.state.ID) {
if (!this.state.Prov) {
debugger;
this.setState({
...this.state,
Prov: 'Please enter Province...'
});
return false;
}
}
else {
return true;
}
}
可能你需要一个 OR (||( 案例:
valid = () => {
//check if any of these are empty
if (!this.state.Name || !this.state.ID || !this.state.Prov) {
// if prov is empty
if (!this.state.Prov) {
this.setState({
...this.state,
Prov: 'Please enter Province...'
});
return false;
}
// if name is empty
if (!this.state.Name) {}
// if ID is empty
if (!this.state.ID) {}
}
else {
return true;
}
}
你的值是空的,所以当你这样做时
!this.state.<member name>
它将 null 更改为 true(因为布尔值(null(=false 和 !false=true( 如果你的 this.state.Prov 未定义,它也值为 true。
所以你所有的if语句的计算结果都是true,所以它更新了值。
除了文件名之外,代码中的文件名在哪里,如果应该设置省并返回 true,您的代码应该在内部有一个 else 条件。