Hen*_*nry 11 javascript jsx reactjs
我想在反应中写出等价物:
if (this.props.conditionA) {
<span>Condition A</span>
} else if (this.props.conditionB) {
<span>Condition B</span>
} else {
<span>Neither</span>
}
Run Code Online (Sandbox Code Playgroud)
也许吧
render() {
return (<div>
{(function(){
if (this.props.conditionA) {
return <span>Condition A</span>
} else if (this.props.conditionB) {
return <span>Condition B</span>
} else {
return <span>Neither</span>
}
}).call(this)}
</div>)
}
Run Code Online (Sandbox Code Playgroud)
但这似乎过于复杂.有没有更好的办法?
Yos*_*ner 41
为什么你说三元不足够表达?
render() {
return <span>
{this.props.conditionA ? "Condition A"
: this.props.conditionB ? "Condition B"
: "Neither"}
</span>;
}
Run Code Online (Sandbox Code Playgroud)
如果不需要<div>,则返回<span>元素:
render() {
if (this.props.conditionA) {
return <span>Condition A</span>;
} else if (this.props.conditionB) {
return <span>Condition B</span>;
} else {
return <span>Neither</span>;
}
}
Run Code Online (Sandbox Code Playgroud)
您甚至可以将最后一条return语句移出else块。
通常,您不必将所有内容都嵌入JSX。就像您在其他地方一样,事先计算值非常好:
render() {
let content;
if (this.props.conditionA) {
content = <span>Condition A</span>;
} else if (this.props.conditionB) {
content = <span>Condition B</span>;
} else {
content = <span>Neither</span>;
}
return <div>{content}</div>;
}
Run Code Online (Sandbox Code Playgroud)
每当需要/想要使用语句时,都必须这样做。
计算值,绑定到一个变量,然后输出更好。如果你确实想要复杂的内联逻辑,你可以使用&&and ||:
render() {
return (<div>
{
this.props.conditionA && <span>Condition A</span>
|| this.props.conditionB && <span>Condition B</span>
|| <span>Neither</span>
}
</div>)
}
Run Code Online (Sandbox Code Playgroud)
编辑:
正如其他人指出的那样,您还可以删除该包装 div 并仍然使用这种方法:
render() {
return (
this.props.conditionA && <span>Condition A</span>
|| this.props.conditionB && <span>Condition B</span>
|| <span>Neither</span>
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23265 次 |
| 最近记录: |