我是 React 的新手,我制作了一个显示用户名 user 的导航栏
<NavItem eventKey={4} href="#">{this.state.name}</NavItem>
但问题是如果用户没有登录,我会因为 this.state.name 未定义而收到错误消息。有什么方法可以检查 this.state.name 在将其渲染为导航栏的一部分之前是否已定义,或者是否有更好的方法来摆脱此错误?
我是 React 的新手,我制作了一个显示用户名 user 的导航栏
<NavItem eventKey={4} href="#">{this.state.name}</NavItem>
但问题是如果用户没有登录,我会因为 this.state.name 未定义而收到错误消息。有什么方法可以检查 this.state.name 在将其渲染为导航栏的一部分之前是否已定义,或者是否有更好的方法来摆脱此错误?
当然,使用三元:
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) })
}
}