If-Else 的 ReactJS JSX 语法

IT技术 reactjs jsx
2021-05-28 14:56:38

我有以下 jsx 代码,我试图从映射函数中删除一些代码,但是 jsx 语法出现错误,我希望仅在有一些数据时才显示此块..

{this.props.someData ? 
  <div className="container">
    <h3>Heading</h3>
    <div className="block1">
      <button>one</button>
      <buttontwo</button>
    </div>  
    this.props.someData.map((response, index) => {
      return ( 
        <div className="Block2">  
          <div key={index}>
            <span>{response.number}</span>
          </div>
        </div>  
      </div> 
    );
}) : ''}
3个回答

像这样写:

{this.props.someData ? 
     <div className="container">
          <h3>Heading</h3>
          <div className="block1">
              <button>one</button>
              <buttontwo</button>
          </div>  
          {this.props.someData.map((response, index) => {
              return ( 
                 <div className="Block2">  
                    <div key={index}>
                     <span>{response.number}</span>
                    </div>
                 </div>
              )})
           }
     </div> 
: <div/>}

你正在做的错误:

要在 html 元素中呈现任何 js 代码,这{}是必需的,因为JSX如果条件为真,则您正在呈现,并且在使用mapso putmap函数 inside 的情况下{},它将起作用。

您应该能够添加一个孩子来{包装您的地图。您还有其他一些错误。你太早考虑你的标签和牙套了。此外,一个“空”的 JSX 元素应该返回 null,而不是空字符串。您的语法也有问题,>此处没有关闭<buttontwo</button>

使用提供语法突出显示的代码编辑器,使用一致的间距,并始终使用 eslint 来检查错误,将有助于防止需要进入 StackOverflow 并阻止您对语法问题的编程。

{this.props.someData ?
    <div className="container">
        <h3>Heading</h3>
        <div className="block1">
            <button>one</button>
            <button>two</button>
        </div>
        { this.props.someData.map((response, index) => {
            return (
                <div className="Block2">
                    <div key={index}>
                        <span>{response.number}</span>
                    </div>
                </div>
            );
        }) }
    </div> : null}

如果我正确理解你的意思,我认为这会做:

 {this.props.someData &&  
  (<div className="container">
    <h3>Heading</h3>
    <div className="block1">
      <button>one</button>
      <buttontwo</button>
    </div>  
    {this.props.someData.map((response, index) => {
      return ( 
        <div className="Block2">  
          <div key={index}>
            <span>{response.number}</span>
          </div>
        </div> 
      );
    })}
  </div>) 
}

我建议您查看文档的条件渲染部分