前端 | JS判断及this.setState()设置不生效问题

如何判断对象为空

  1. for…in…遍历属性,为真则为“非空数组”;否则为“空数组”
    function obj(o){
          
          
    	for(var item in o){
          
          
    		console.log('非空');
    	}
    	console.log('空');
    }
    
  2. 通过JSON自带的.stringify方法来判断
    if(JSON.stringify(obj)=='{}'){
          
          
    	console.log('空');
    }
    
  3. ES6新增的方法Object.keys()
    if(Object.keys(obj).length == 0 ){
          
          
    	console.log('空');
    }else{
          
          
    	console.log('非空');
    }
    

如何对undefined判断

  1. js判断变量未定义
    var exp = undefined;
    if (typeof(exp) == "undefined")
    {
          
          
        alert("undefined");
    }
    

this.setState()异步调用问题

明明执行过setState(),但是state里的值却不是最新的,那么如何解决这个问题呢?
因为setState()函数接受两个参数,一个是对象,就是设置的状态,还有一个是回调函数,是在设置状态成功之后执行的,所以我们可以通过回调函数拿到最新的state值。

this.setState({
    
    tableStateList: []}, () => {
    
    
		//这里打印的是最新的state值
       	console.log(this.state.tableStateList);
	})

猜你喜欢

转载自blog.csdn.net/u012294515/article/details/92967762
今日推荐