【问题标题】:Jsx concatenation using template literal string in filter and map在过滤器和映射中使用模板文字字符串进行 Jsx 连接
【发布时间】:2017-09-10 14:52:52
【问题描述】:

我应该怎么做才能更正下面的代码?

<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_date 不是null 时,我如何连接You have to complete this task in

【问题讨论】:

  • 第一个代码有什么问题,它会抛出任何错误吗?
  • @MayankShukla 对象作为 React 子对象无效

标签: javascript reactjs jsx


【解决方案1】:

您可以返回一个三元并使用 es6 的模板文字字符串插值。

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)

【讨论】:

  • 为什么 && 在这里不起作用?仅仅因为 map 必须返回 true 或 false?
【解决方案2】:

obj.expiry_date || '' 可能会完成这项工作

您也可以使用conditional (ternary) operator obj.expiry_date ? obj.expiry_date : ''

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-02
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多