2017-09-10 11 views
0

以下のコードを修正するにはどうすればよいですか?フィルタとマップでテンプレートリテラル文字列を使用したJsx連結

<p> 
{ads.filter(obj => obj._id === this.state.selectedAd_Id) 
.map(obj =>obj.expiry_date 
&& 
`You have to complete this task in${fromNow(moment(obj.expiry_date))}`)} 
</p> 

これは

<p> 
{ads.filter(obj => obj._id === this.state.selectedAd_Id) 
.map(obj => obj.expiry_date 
&& fromNow(moment(obj.expiry_date)))} 
</p> 

を働いている。しかしobj.expiry_datenullないときにどのように私はYou have to complete this task inをCONCATことができますか?

+0

どのようなエラーが発生しているのですか? –

+0

@MayankShuklaオブジェクトはリアクションの子としては有効ではありません –

答えて

0

を使用することができます仕事

を行います。

ads.filter(obj => obj._id === this.state.selectedAd_Id) 
    .map(obj => obj.expiry_date ? `You have to complete this task in ${fromNow(moment(obj.expiry_date))}` : false) 
+0

なぜ&&がここで動作しないのですか?マップがtrueまたはfalseを返さなければならないからです。 –

0

obj.expiry_date || ''は、おそらくまた、あなたは三元を返し、ES6でテンプレート文字列リテラルの補間を使用することができますconditional (ternary) operatorobj.expiry_date ? obj.expiry_date : ''

+0

これはうまくいきました。マップでなぜ私は '&&'を使うことができませんか? –

+0

'||'は論理的なもので、 '&&'は論理的なものです。 [論理演算子](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators#Logical_OR)のドキュメントを確認してください – Caligone

関連する問題