需要帮助在 JSX 中设置条件

Need help setting up a conditional in JSX

我正在迭代从 json 文件获取数据并显示到 DOM 的 JSX 代码块。我需要在我的地图函数的第一次迭代中应用样式,但其余部分需要为空白。

训练变量保存我的 json 文件中的数据。我需要将样式 "marginRight:'5%'" 应用于此映射方法的第一次迭代。

trainer.js

{ training.map((course, index) => {     
  return (
    <Course name={course.name}
        school={course.school}
        location={course.location}
        year={course.year}
        class={classes}
        key={index}

        style={{marginRight: '5%'}}  <- this works but applies the style to all courses, which is not what I want.

    />
  )
})}

trainerTemplate.js - 这是呈现的模板。道具从 trainer.js

传递到这里
function Course(props){
  return (
    <Fragment>
      <Grid item style={props.style}>

我假设我需要在某个地方设置一个三元运算符来检查索引是否为 0,但我似乎无法正常工作

同@凯青ansewr

{ training.map((course, index) => {     
  return (
    <Course name={course.name}
        school={course.school}
        location={course.location}
        year={course.year}
        class={classes}
        key={index}
style={{marginRight: index === 0 ? '5%' : ''
  }}  
    />
  )
})}

试试这个,我认为它比内联更清楚一点:

{ training.map((course, index) => {
  const style = index === 0 ? { marginRight: '5%' } : null; // then use this as the style later
  return (
    <Course 
        name={course.name}
        school={course.school}
        location={course.location}
        year={course.year}
        className={classes} // also change this to className, not class
        key={index} // if you can, avoid using the index as the key
        style={style}  
    />
  )
})}

如果你有条件地想单独为第一项设置边距,你可以试试这个:这个为第一条传递样式属性,如果索引不属于,则避免over-writing先前设置边距第一个元素。

{training.map((course, index) => {
  return (
    <Course
      name={course.name}
      school={course.school}
      location={course.location}
      year={course.year}
      class={classes}
      key={index}
      style={index === 0 ? { marginRight: "5%" } : {}}
   />
  );
})}