【问题标题】:Do different thing for first element inside map function对地图函数中的第一个元素做不同的事情
【发布时间】:2020-10-05 01:36:02
【问题描述】:

有这样的地图功能:

{myData.map(item => (
    <Cell
      key={myData.indexOf(item)}
      label={item.label}
      value={item.value}
      email
    />
  ))}

Cell 是另一个组件,如果 email 存在,它会针对该数据执行不同的操作。

就我而言,我希望email 可用于myData 中的所有元素,但没有第一个元素。 email 是一个 boolean,稍后会被 Cell 组件使用。

所以我尝试添加索引并使用它

{myData.map((item, index) => (
    <Cell
      key={myData.indexOf(item)}
      label={item.label}
      value={item.value}
      email={index !== 0 ? email : null}
    />
  ))}

不幸的是,没有工作,它说电子邮件未定义。有没有办法在这里解决这个问题?我想在 map 函数中解决它。

【问题讨论】:

  • 首先您可以将myData.indexOf(item) 替换为索引
  • 好吧,email 应该是什么?
  • 这里的email 是什么?
  • 这里应该是item.emailindex !== 0 ? email : null
  • 请为此使用codesandbox.io 创建一个small demo 以显示正在发生的问题。

标签: javascript reactjs dictionary ecmascript-6


【解决方案1】:

我猜Cell 中的电子邮件属性是布尔值。因此它的存在评估为真或假。

如果是这样,请更改为:

{myData.map((item, index) => (
    <Cell
      key={myData.indexOf(item)}
      label={item.label}
      value={item.value}
      email={index !== 0}
    />
  ))}

编辑:index !== 0 ? true : false -> index !== 0 脑屁

【讨论】:

  • 或者只是email={index !== 0}
  • 我猜 eslint 不允许我在那里使用布尔值,但我将其更改为 ` email={index !== 0 ? 1 : 0}` 并且有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 1970-01-01
  • 2011-09-21
  • 2013-10-27
相关资源
最近更新 更多