基本上,我有一个react组件,它的render()函数体如下:(这是我理想的一个,这意味着它目前不起作用)
render(){ return ( <div> <Element1/> <Element2/> // note: code does not work here if (this.props.hasImage) <MyImage /> else <OtherElement/> </div> ) }
不完全是这样,但有一些解决方法.在
React’s docs中有一个关于条件渲染的部分,你应该看看.以下是使用内联if-else可以执行的操作的示例.
render() { const isLoggedIn = this.state.isLoggedIn; return ( <div> {isLoggedIn ? ( <logoutButton onClick={this.handlelogoutClick} /> ) : ( <LoginButton onClick={this.handleLoginClick} /> )} </div> ); }
你也可以在渲染函数中处理它,但在返回jsx之前.
if (isLoggedIn) { button = <logoutButton onClick={this.handlelogoutClick} />; } else { button = <LoginButton onClick={this.handleLoginClick} />; } return ( <div> <Greeting isLoggedIn={isLoggedIn} /> {button} </div> );
值得一提的是ZekeDroid在评论中提到的内容.如果您只是检查条件并且不想呈现不符合的特定代码,则可以使用&&操作符.
return ( <div> <h1>Hello!</h1> {unreadMessages.length > 0 && <h2> You have {unreadMessages.length} unread messages. </h2> } </div> );