我正在使用react,如果this.state.message === 'failed'
,我试图显示此错误消息。但我真的不知道为什么这个三元运算不起作用。我做错了什么?
render() {
...
<div className="row">
return (this.state.message === 'failed') ? ( =>{" "}
{
<div className="alert alert-danger" role="alert">
Something went wrong
</div>
}
)() : false; }
</div>
}
现在它只是在html中显示return (this.state.message === 'failed') ? ( =>
9条答案
按热度按时间dxpyg8gm1#
我现在喜欢在react中这样格式化我的三进制文件:
您说得对,IIFE可以在render语句中使用,也可以在三元表达式中使用。使用普通的
if .. else
语句是有效的,但是render
函数的return语句只能包含表达式,因此您必须在其他地方执行这些操作。ukxgm1gy2#
三进制的语法是
condition ? if : else
。为了安全起见,您可以始终将整个三元语句 Package 在括号内。JSX元素也用括号括起来。箭头函数中的胖箭头前面总是有两个圆括号(用于参数)-但无论如何,这里不需要任何函数。因此,考虑到所有这些,您的代码中存在一些语法错误。这里有一个工作解决方案:编辑:如果这是在其他标记中,那么你不需要再次调用render。你可以只使用花括号进行插值。
92dk7w1h3#
@Nathan的公认答案和其他类似的答案都是正确的。但值得注意的是,
?
的结果和:
的结果必须都是单个元素或 Package 在单个元素中(或者结果可能是null | undefined
,其中任何一个都有资格作为单个元素)。在下面的示例中,?
的结果将工作,但:
的结果将失败。x7rlezfr4#
你应该试试这个:
0md85ypi5#
根据上面的答案,您还可以在
render()
中直接返回来自return()
的三元表达式,如下所示在function1()和function2()中,你可以返回你的视图。
gz5pxeao6#
对于在三进制中使用变量,请再次使用方括号
gt0wga4j7#
请记住,三进制表达式应该 Package 在一个片段或div中,如果没有 Package 它将抛出一个编译错误
bgibtngc8#
另一个使用React简写片段(如
<>...</>
)和组件(函数而不是类)的答案:6qqygrtg9#