Javascript 如果或条件不';行不通

Javascript 如果或条件不';行不通,javascript,reactjs,if-statement,Javascript,Reactjs,If Statement,我是javascript新手,我想根据state.value!=null或“”。它不会抛出错误,但会在那里冻结。请看下面我的代码。任何帮助都将不胜感激 constructor(){ super(); this.state = { value:null, list:[] } } handleList = () => { //let list = this.state.list.slice(); if (this.sta

我是javascript新手,我想根据state.value!=null或“”。它不会抛出错误,但会在那里冻结。请看下面我的代码。任何帮助都将不胜感激

constructor(){
    super();
    this.state = {
        value:null,
        list:[]
    }
}

handleList = () => {
    //let list = this.state.list.slice();
    if (this.state.value != null || this.state.value.length() > 0 ) {
        let list = [...this.state.list];
        list.push(<li>{this.state.value}</li>);

        this.setState({list});
        console.log(list.length,this.state.list.length);
    }else{
        console.log("Cant enter null");
    }
}


render() {

    return(
        <div className = 'global'>

           <button onClick={() => {this.handleList()}
            }>Add-New</button>
            <input 
                onChange = {
                    (e)=>{this.setState({value: e.target.value})}
                }
                type = 'text' 
                placeholder = 'Enter New Todo!'/>
            <hr/>
            <ul>
                {
                    this.state.list.map((li) => {
                        return (li);
                    })
                }
            </ul>

        </div>
    );
}
constructor(){
超级();
此.state={
值:null,
名单:[]
}
}
handleList=()=>{
//让list=this.state.list.slice();
if(this.state.value!=null | | this.state.value.length()>0){
let list=[…this.state.list];
list.push(
  • {this.state.value}
  • ); this.setState({list}); log(list.length,this.state.list.length); }否则{ console.log(“不能输入null”); } } render(){ 返回( {this.handleList()} }>新增 {this.setState({value:e.target.value})} } 类型='text' 占位符='输入新Todo!'/>
      { this.state.list.map((li)=>{ 返回(li); }) }
    ); }
    }评估字符串的存在性

    在JavaScript中:空的
    字符串
    '
    假的
    (计算为
    假的

    const x=''
    if(x)console.log('x=true')
    
    else console.log('x=false')
    因为您使用的是OR,所以这两个条件都被选中。因此,即使值为NULL,代码仍在尝试检查字符串的长度。但是NULL对象没有“length”属性,因此这将导致“value没有属性:length”错误。要解决这个问题,使用AND(&&)更合适

    此外,“length”属性是一个值,而不是一个函数,因此尝试作为函数调用将导致“length是值的函数”错误


    查看网页时,这些错误应出现在控制台中。如果按F12键,浏览器底部会出现一个窗口。如果选择console选项卡,则应该能够看到所有错误输出。您可能需要确保没有筛选错误消息。

    Length是一个属性,而不是一个函数:
    this.state.value.Length()
    =>
    this.state.value.Length
    我知道您已经在那里找到了标记,但在您的问题中值得注意的是它与React有关。否则,代码就没有意义了。空值的内容将没有长度属性,因此代码也会在那里出错,您正在查找AND(
    &&
    )。此外,在或之间的条件周围添加括号