React中三元运算符的坑

在React中state的定义中有一个坑不易被发现,主要是state属性未被定义就是使用,需要用到三位运算符:
举个栗子:

class App extends Component{
  this.state={

  }
  componentDidMount(){
    请求后端接口拿到数据data,data是一个对象数组
  }
  // 然后将data保存在当前状态之中
  this.setState({
    data:DataTransferItem
  })
  // 渲染到页面上
  render(){
    return(
      <div>
        {this.state.data[0].name}
      </div>
    )
  }
}

是会报错的,原因有几点:

  • render在componentDidMount之前运行,此时state中没有data
  • 就算定义初始时状态data:[],还是会报错的,只加这一个还不够。此时this.state.data是一个空数组,获取不到this.state.data[0].name,渲染到页面上的时候还是会报错。
    代码需要改进,主要是两个方面:
  1. 初始state定义
  2. 用三元运算符判断state.data
class App extends Component{
  this.state={
		data:[]
  }
  componentDidMount(){
    请求后端接口拿到数据data,data是一个对象数组
  }
  // 然后将data保存在当前状态之中
  this.setState({
    data:DataTransferItem
  })
  // 渲染到页面上
  render(){
    return(
      <div>
        {this.state.data.length!==0?this.state.data[0].name:''}
      </div>
    )
  }
}

总结:代码要规范,初始状态要定义,数据为空要判断。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值