React:我可以在渲染之前检查状态是否存在

IT技术 javascript reactjs react-jsx
2021-05-25 15:12:27

我是 React 的新手,我制作了一个显示用户名 user 的导航栏

<NavItem eventKey={4} href="#">{this.state.name}</NavItem>

但问题是如果用户没有登录,我会因为 this.state.name 未定义而收到错误消息。有什么方法可以检查 this.state.name 在将其渲染为导航栏的一部分之前是否已定义,或者是否有更好的方法来摆脱此错误?

3个回答

当然,使用三元:

render() {
  return (
    this.state.name ? <NavItem>{this.state.name}</NavItem> : null
  );
}

甚至更短

render() {
  return (
    this.state.name && <NavItem>{this.state.name}</NavItem>
  );
}

你当然可以:

let userNavItem
if (this.state.name !== undefined) {
  userNavItem = <NavItem eventKey={4} href="#">{this.state.name}</NavItem>
} else {
  userNavItem = null
}

现在您可以userNavItem在您的导航栏组件上使用,并且只有在this.state.name定义时才会呈现

在 React 中,您可以在推送之前检查状态是否存在

    checkedProduct=(prop)=>{
  var checkIfExist = this.state.checkedProduct.filter((product)=>{
    return product===prop
  })
  if(checkIfExist.length>0){
    var checkIfExist = this.state.checkedProduct.filter((product)=>{
      return product!==prop
    })
    this.setState({ checkedProduct:checkIfExist })

  }else{
    this.setState({ checkedProduct: this.state.checkedProduct.concat(prop) })
  }
}