我出于历史目的将其保留在此处,请在反应开发了一段时间
后创建一个NgIf组件(这是本机反应,但可能对反应有效)后,请在下面查看我的修改,以寻求更好的解决方案
码:
import React, {Component} from "react";
class NgIf extends Component {
render() {
if (this.props.show) {
return (
this.props.children
);
} else {
return null
}
}
}
export default NgIf;
用法:
...
import NgIf from "./path/to/component"
...
class MyClass {
render(){
<NgIf show={this.props.show}><Text>This Gets Displayed</Text></NgIf>
}
}
我对此并不陌生,因此可能会有所改进,但可以帮助我从Angular过渡
编辑
一旦我有更多的经验,请参阅下面的编辑以获得更好的解释
感谢下面的Jay评论,一个好主意也是:
render() {
<View>{this.props.value ? <Text>Yes</Text> : <Text>No</Text>}</View>
}
要么
render() {
<View>{this.props.value && <Text>Yes</Text>}</View>
}
与其他一些答案类似,但是它们是内联的,而不是使用整个渲染块/函数,不需要特殊的组件,并且您可以将else语句与三元运算符一起使用。如果父项不存在,则if语句中包含的项不会引发错误。即,如果props.value
不存在,则props.value.value2
不会引发错误。
看到这个答案https://stackoverflow.com/a/26152067
编辑2:
根据上面的链接(https://stackoverflow.com/a/26152067),经过大量的开发React应用程序的经验,上述方法并不是最好的方法。
实际上,有条件运算符的反应很容易使您着迷。有两种处理方法:
{someItem && displayThis}
{someItem ? displayThisIfTrue : displayThisIfFalse}
您可能要注意的一个警告是,如果“ someItem”不是布尔表达式。如果说0,则react将打印0或react native将给您有关需要在文本元素中包装“ 0”的错误。对于虚假测试,这通常不是问题,但对于真实测试,将提出问题。例如:
{!someItem && displayThis}
{someItem && displayThis}
我经常使用的把戏?双重底片。
{!!someItem && displayThis}
注意,这不适用于三元运算符(myVar?true:false),因为它会将结果隐式转换为布尔表达式。