javascript - 在 React 中映射元素时,如何根据特定索引处的字段有条件地渲染节点?

标签 javascript reactjs

我有这样一个数据集:

const data = [
  {id: '123', distance_miles: 300, name: 'Karen', ...},
  {id: '124', distance_miles: 50, name: 'Bob', ...},
  {id: '125', distance_miles: 26, name: 'Kim', ...},
  // ....
];

我正在使用它在 React 中渲染一些元素:

<>
  {data.map(d => <div key={d.id}>{d.name}</div>)}
  // ....
</>

但是,如果此完整数据集中的 distance_miles 字段全部 25,我想插入一个专门插入第三个索引的节点.

我尝试过映射数据集并过滤掉 distance_miles,但我不确定从哪里开始。

我也尝试研究 .splice(),但不确定如何使用它来考虑条件。

我还尝试将渲染的数组保存到一个变量中:

const renderedData = data.map(d => <div key={d.id}>{d.name}</div>)
// splice node into renderedData?

但我遇到了如何读取 distance_mile 字段的障碍。有谁知道如何处理这样的事情?

最佳答案

您可以创建一个辅助函数来检查每个 distance_miles 属性是否大于 25:

const isEveryHigher = (arr) => arr.every(({ distance_miles }) => distance_miles > 25);

然后使用条件映射:

(isEveryHigher(data) 
    ? [...data.slice(0, 3), <SomeNode />, ...data.slice(3)] 
    : data)
.map(() => ...); // render your stuff

关于javascript - 在 React 中映射元素时,如何根据特定索引处的字段有条件地渲染节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59381166/

相关文章:

javascript - 如何将来自webview的数据存储在localdata UWP中

reactjs - Create-React-App : . env 文件无法正确解析

javascript - this.refs 是一个空对象,尽管它应该被设置

javascript - 依次乘以数组编号

javascript - 定义Java POJO,这样Gson就不会写双引号的值

reactjs - ReactJS 中的高阶组件 - 从数据组件扩展功能

javascript - 不可变,为什么当我使用 reselect 时,使用 fromJS 的嵌套对象不是不可变的

javascript - React router dom 6 路由结构与布局

javascript - 使用 JavaScript/jQuery 似乎无法更改 h :outputText "value", 甚至值表达式

javascript - 为什么 typescript ReadonlyArrays 在编译为 javascript 时是 mutlabe