我在javascript中有以下代码,该代码确定Prov的值是否为null或未定义
但不幸的是,它无法这样做,并且能够更新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,
}
答案 0 :(得分:1)
如果您的初始状态如下
this.state = {
Name: null,
ID: null,
Prov: null,
}
您的逻辑尝试检查它是否为null,然后添加Prov,这将更新Prov。 如果您不想在Prov具有虚假值(null,undefined,0,NaN,false)时更新它,请更改
if (!this.state.Prov)
到
if (this.state.Prov) {
答案 1 :(得分:0)
在第一个if条件中,您写了“ stat”而不是“ state”,我认为它应该起作用,让我们知道它是否起作用
答案 2 :(得分:0)
您的值为空,所以当您这样做
!this.state.<member name>
将null更改为true(如boolean(null)= false和!false = true)
如果您的this.state.Prov未定义,则其值也将为true。
因此,所有if语句的评估结果均为true,因此会更新其值。
答案 3 :(得分:0)
因为设置了PROV后,即使没有设置名称和ID,您也会返回true吗?
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;
}
}
答案 4 :(得分:0)
可能您需要使用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;
}
}
答案 5 :(得分:0)
代码中除了文件名之外,文件名在哪里?如果应该设置省份并返回true,则代码内部应具有else条件。