使用 array.map 返回响应三元运算符

Man*_*ena 2 javascript arrays reactjs

在我的 React 渲染函数中,我使用 array.map 返回数组中的一些 JSX 代码,然后渲染它。这似乎不起作用,我在这里读到了一些问题,建议在 if/else 块内使用 return 语句,但这在我的情况下不起作用。我想检查每个数组元素上是否设置了轮次和持续时间,然后才将其传递到 JSX 代码中。有人可以告诉我一种不同的方法吗?

render() {
 var interviewProcessMapped = interviewProcess.map((item, index) => {

  return
    {item.round ?
        <div className="row title">
          <div className="__section--left"><span className="section-title">Round {index + 1}</span></div>
          <div className="__section--right">
            <h3>{item.round}</h3>
          </div>
        </div>
        : null
    }

    {
      item.durationHours > 0 || item.durationMinutes > 0 ?
        <div className="row">
          <div className="__section--left">Duration</div>
          <div className="__section--right border">
            {item.durationHours > 0 ? <span>{item.durationHours} Hours</span> : null} {item.durationMinutes > 0 ? <span>{item.durationMinutes} Minutes</span> : null}
          </div>
        </div>
        : null
    }
  });

 return <div>{interviewProcessMapped}</div>
}
Run Code Online (Sandbox Code Playgroud)

May*_*kla 5

{这里不需要:

return {item.round ?
Run Code Online (Sandbox Code Playgroud)

如果您使用它,则意味着您正在返回一个对象。

另一个问题是单独的return方法return;自动分号插入),因此要么将条件放在同一行中,要么使用().

像这样写:

render() {
    let a, b;
    var interviewProcessMapped = interviewProcess.map((item, index) => {
        a = item.round ?
                <div className="row title">
                    ....
                </div>
            : null;

        b =  (item.durationHours > 0 || item.durationMinutes > 0) ?
                  <div className="row">
                      ....
                  </div>
              : null;

        if(!a || !b)
            return a || b;
        return [a, b];
    });

    return (....)
}
Run Code Online (Sandbox Code Playgroud)