React JS 中单个 .map() 内的多个三元运算符
Multiple ternary operators inside a single .map() in React JS
我正在映射数组中的数据,我只想在它们的值不同于 null 时显示它们。
我在这个数组中有多个对象(功率、精度、pp、...),我正在为每个对象做一个三元运算符。
这是我的代码(工作正常):
{move?.past_values?.map((mp) =>
mp?.power !== null ? (
<li>Before {mp?.version_group?.name} : {mp?.power}</li>
) : (
null
)
)}
当我尝试这样做时:
mp?.power !== null ? (
<li>Before {mp?.version_group?.name} : {mp?.power}</li>
) : (
null
)
mp?.accuracy !== null ? (
<li>Before {mp?.version_group?.name} : {mp?.accuracy}</li>
) : (
null
)
它说我应该在第一个三元运算符的最后一个括号后加上“,”。
问题是我需要为第二个三元运算符重新映射整个数组,因为“mp”变得未定义。
有没有办法在单个映射函数中使用多个三元运算符,或者我是否每次都映射数组?
如果你以这种方式重构它,它应该可以工作,并且它是在 react 中进行条件渲染的更干净的方式
{move?.past_values?.map((mp) =>
<>
{mp?.power !== null &&
<li>Before {mp?.version_group?.name} : {mp?.power}</li>}
{mp?.accuracy !== null &&
<li>Before {mp?.version_group?.name} : {mp?.accuracy}</li>} )
</>
}
我正在映射数组中的数据,我只想在它们的值不同于 null 时显示它们。
我在这个数组中有多个对象(功率、精度、pp、...),我正在为每个对象做一个三元运算符。
这是我的代码(工作正常):
{move?.past_values?.map((mp) =>
mp?.power !== null ? (
<li>Before {mp?.version_group?.name} : {mp?.power}</li>
) : (
null
)
)}
当我尝试这样做时:
mp?.power !== null ? (
<li>Before {mp?.version_group?.name} : {mp?.power}</li>
) : (
null
)
mp?.accuracy !== null ? (
<li>Before {mp?.version_group?.name} : {mp?.accuracy}</li>
) : (
null
)
它说我应该在第一个三元运算符的最后一个括号后加上“,”。
问题是我需要为第二个三元运算符重新映射整个数组,因为“mp”变得未定义。
有没有办法在单个映射函数中使用多个三元运算符,或者我是否每次都映射数组?
如果你以这种方式重构它,它应该可以工作,并且它是在 react 中进行条件渲染的更干净的方式
{move?.past_values?.map((mp) =>
<>
{mp?.power !== null &&
<li>Before {mp?.version_group?.name} : {mp?.power}</li>}
{mp?.accuracy !== null &&
<li>Before {mp?.version_group?.name} : {mp?.accuracy}</li>} )
</>
}