javascript - 在 React 中如何使用条件渲染?

标签 javascript reactjs

我有一个简单的通知窗口,当通知被接受/拒绝时,我从 notifications 数组中删除该对象。

这是我处理显示消息的代码:

render: function() {
  return (
      <div className="chatwindowheight">
        <div className="row">
          <div className="large-12 columns">
            <div className="large-8 columns">
              <p className="thin partyHeader">Party <i className="fa fa-minus-square-o"></i></p>
            </div>

            <div className="large-4 columns">
              <i className="fa fa-users pull-right"></i>
            </div>
          </div>
        </div>
        <div className="row chatwindowheight">
          <div className="large-12 small-12 columns chatwindow" id="scrolldown">
          <br/>
            {
              this.state.messages.map((message, i) => {
                return (
                    <MessageComponent key={i}
                                      username={message.username}
                                      message={message.message}
                                      whos={message.classed} />
                  );
              })
            }
          </div>
        </div>
      <ChatSendComponent onChatSubmit={this.handleChatSubmit}/>
    </div>
  )
}

我想要的是有类似的东西

if (this.state.messages.length === 0) {
  return (
    <p>You have no new notifications.</p>
  )    
}

但是当我尝试在当前循环中包装类似的内容时,它告诉我 if 是一个错误。 React 新手,所以只是想了解解决此问题的最佳方法。谢谢!

最佳答案

有一些不同的方法可以解决您的问题: 1.

{ this.state.messages.length > 0 ?
  this.state.messages.map((message, i) => {
    return (
     <MessageComponent key={i}
       username={message.username}
       message={message.message}
       whos={message.classed} />
     );
 }) : 'You have messages'
}
  • 删除映射到渲染函数并在那里准备数据: function render() { var message=''; if (this.state.messages.length) { } } <b>{message}</b>
  • 关于javascript - 在 React 中如何使用条件渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33515374/

    相关文章:

    javascript - IE11 未在端口上显示相同内容

    javascript - 日期、Angularjs、WebAPI

    javascript - 我可以在react中删除props吗

    javascript - 为什么将 Next.js API 路由与外部 API 一起使用?

    javascript - Ember {{each}} 助手未显示完整列表

    javascript - 添加 CSS 类和子级数量的性能

    javascript - 使用 .replace 将 HTML 字符串替换为 javascript

    javascript - 无法读取ReactJS中未定义的属性 'id'

    css - 根据 React 中的页面更改导航栏背景颜色

    javascript - 如何将 refs 传递到 NavigationBar RouteMapper (React Native) 的变量中?