前端 | 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);
	})

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值