【发布时间】:2017-04-03 01:22:57
【问题描述】:
我正在尝试从数组中创建一个 React 列表。我已经做到了
const persons = [
{ name: 'A', website: 'http://google.com' },
{ name: 'B', email: 'b@google.com' },
];
const listItems = persons.map((person, i) =>
<div className="card" key={i}>
<div className="card-block">
<h4 className="card-title">{person.name}</h4>
</div>
<ul className="list-group list-group-flush">
<a href="{person.website}" className="list-group-item">{person.website}</a>
<a href="mailto:{person.email}" className="list-group-item">{person.email}</a>
</ul>
</div>
);
const PersonList = () => (
<div className="card-deck-wrapper">
{listItems}
</div>
);
问题在于数据各不相同,因此有些人没有电子邮件,有些人没有网站,有些人也没有。
所以如果一个人都没有,这个块
<ul className="list-group list-group-flush">
<a href="{person.website}" className="list-group-item">{person.website}</a>
<a href="mailto:{person.email}" className="list-group-item">{person.email}</a>
</ul>
应该完全省略。
如果此人没有电子邮件,则应省略电子邮件链接,如果他/她没有网站,则应省略此链接。
所以我的 JSX 中需要一些 if 语句。
我想要的是这样的
const listItems = persons.map((person, i) =>
<div className="card" key={i}>
<div className="card-block">
<h4 className="card-title">{person.name}</h4>
</div>
if (person.website || person.email) {
<ul className="list-group list-group-flush">
if (person.website) {
<a href="{person.website}" className="list-group-item">{person.website}</a>
}
if (person.email) {
<a href="mailto:{person.email}" className="list-group-item">{person.email}</a>
}
</ul>
}
</div>
);
但它不是有效的 JSX。
【问题讨论】:
标签: javascript reactjs react-router react-jsx jsx