我使用React 16.0。
我想要有条件地返回一个元素,如下所示。
import React from 'react';
export default class App extends React.PureComponent {
render () {
return [
<div className="a"></div>,
{condition ? <div className="b"></div> : null},
{condition ? <div className="c"></div> : null}
];
}
}
有没有办法在return语句之外没有任何额外的方法或条件语句?
谢谢你的阅读。答案 0 :(得分:4)
你在数组中,而不是JSX。没有必要使用花括号,只需执行三元操作,然后在其后面加一个逗号。
return [
<div className="a"></div>,
condition ? <div className="b"></div> : null,
condition ? <div className="c"></div> : null
];
请记住,如果条件为false,这将创建索引,其值为数组中的值。
答案 1 :(得分:3)
您不需要将您的条件包裹在{}
内,否则会使其成为数组中的对象。您还需要为数组中的每个项指定唯一键。
const condition = true;
export default class App extends React.PureComponent {
render() {
return [
<div key="a" className="a">a</div>,
condition?<div key="b" className="b">b</div> : null,
condition?<div key="c" className="c">c</div> : null
];
}
}
render(<App />, document.getElementById('root'));
<强> CodeSandbox 强>
答案 2 :(得分:1)
您可以简单地将其作为
export default class App extends React.PureComponent {
render () {
var b = condition ? <div className="b"></div> : null;
var c = condition ? <div className="c"></div> : null;
return [<div className="a"></div>,b,c];
}
}
答案 3 :(得分:0)
看起来你基本上拥有它!
import React from 'react';
export default class App extends React.PureComponent {
render () {
return (
<div>
<div className="a"></div>
{condition ? <div className="b"></div> : undefined}
{condition ? <div className="c"></div> : undefined}
</div>
);
}
}
这将呈现第一个div,无论如何,然后只有第二个和第三个基于&#34;条件&#34;是真的。