我是reactjs的新手,我正尝试使用三元运算符根据条件渲染jsx,但会引发错误:Line 22: Expected an assignment or function call and instead saw an expression no-unused-expressions
。
这是代码:
const posts = this.state.posts.length > 0 ?
this.state.posts.map(elem=>{
<div class="col s12 m7">
<h2 class="header">{elem.title}</h2>
<div class="card horizontal">
<div class="card-stacked">
<div class="card-content">
<p>{elem.body}</p>
</div>
<div class="card-action">
<a href="#">This is a link</a>
</div>
</div>
</div>
</div>
})
:null;
我尝试在括号this.state.posts.length > 0
中包含( )
为真的情况下的第一个返回值,但是效果不好。
预先感谢。
答案 0 :(得分:1)
您需要从传递给map
方法的函数中返回jsx。
在传递给return
方法的函数中使用map
。
const posts =
this.state.posts.length > 0
? this.state.posts.map(elem => {
return (
<div className="col s12 m7">
<h2 className="header">{elem.title}</h2>
<div className="card horizontal">
<div className="card-stacked">
<div className="card-content">
<p>{elem.body}</p>
</div>
<div className="card-action">
<a href="#">This is a link</a>
</div>
</div>
</div>
</div>
);
})
: null;
您还可以将()
用于隐式return
。
const posts =
this.state.posts.length > 0
? this.state.posts.map(elem => (
<div className="col s12 m7">
<h2 className="header">{elem.title}</h2>
<div className="card horizontal">
<div className="card-stacked">
<div className="card-content">
<p>{elem.body}</p>
</div>
<div className="card-action">
<a href="#">This is a link</a>
</div>
</div>
</div>
</div>
))
: null;
还可以在jsx中将className
用于class
。