Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
映射内的React/Javascript If语句_Javascript_Reactjs - Fatal编程技术网

映射内的React/Javascript If语句

映射内的React/Javascript If语句,javascript,reactjs,Javascript,Reactjs,我试图创建一个表,根据从映射函数派生的属性,该表将具有不同颜色的行: var tableData = this.state.data.map(attribute => {if(attribute.duplicate.toString()== "true") return <tr className="table-success">; else retu

我试图创建一个表,根据从映射函数派生的属性,该表将具有不同颜色的行:

       var tableData = this.state.data.map(attribute =>

            {if(attribute.duplicate.toString()== "true")
                return <tr className="table-success">;
            else
                return <tr className="table-warning">;
            }
                <td> {count++} </td>
                ...
                <td> {attribute.duplicate.toString()} </td>
            </tr>
       );
但我得到了以下错误:

[INFO] Module build failed: SyntaxError: C:/Users/.../all.js: Unterminated JSX contents (78:14)
[INFO] 
[INFO]   76 | 
[INFO]   77 |             </div>
[INFO] > 78 |         </div>
[INFO]      |               ^
[INFO]模块生成失败:语法错误:C:/Users/../all.js:未终止的JSX内容(78:14)
[信息]
[信息]76|
[信息]77|
[信息]>78 |
[信息]|^

你知道问题出在哪里吗?或者用另一种方法来实现我想做的事情吗?

只要把条件逻辑移到
类名中,或者把它赋给一个变量,然后在
tr
中使用它

   var tableData = this.state.data.map(attribute => 
       <tr className={attribute.duplicate.toString() == "true" ? "table-success" : "table-warning"}>
            <td> {count++} </td>
            ...
            <td> {attribute.duplicate.toString()} </td>
        </tr>
   );
var tableData=this.state.data.map(属性=>
{count++}
...
{attribute.duplicate.toString()}
);

只需将条件逻辑移动到
类名中,或将其分配给变量,然后在
tr
中使用它即可

   var tableData = this.state.data.map(attribute => 
       <tr className={attribute.duplicate.toString() == "true" ? "table-success" : "table-warning"}>
            <td> {count++} </td>
            ...
            <td> {attribute.duplicate.toString()} </td>
        </tr>
   );
var tableData=this.state.data.map(属性=>
{count++}
...
{attribute.duplicate.toString()}
);

您不能让元素像这样打开,JSX需要带有关闭标记的元素。@但所有内容都已关闭,您是否引用了标记?if语句中的返回将退出映射调用。你写的代码没有多大意义。如果您在codesandbox.io上重新创建它,我们将很容易提供帮助。@Gabriel_bu确切地说,您让tr标记保持打开状态。您不能让元素保持这样打开状态,JSX需要带有关闭标记的元素。@MinusFour但所有内容都已关闭,您是否引用了标记?If语句中的返回将退出映射调用。你写的代码没有多大意义。如果您在codesandbox.io上重新创建了这个,那么我们将很容易提供帮助。@Gabriel_bu确切地说,您正在打开tr标记。您还应该查看JSX[()中的[If Else]。这将解释为什么不能在JSX中使用if-else。简短的是:if-else语句在JSX中不起作用。这是因为JSX只是函数调用和对象构造的语法糖。您还应该看看[if-else in JSX[()。这将解释为什么不能在JSX中使用if-else。简称是:if-else语句在JSX中不起作用。这是因为JSX只是函数调用和对象构造的语法糖。