映射内的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只是函数调用和对象构造的语法糖。