Javascript 什么';这是在react中查找分页列表中某类型项的第n个元素的最佳方法

Javascript 什么';这是在react中查找分页列表中某类型项的第n个元素的最佳方法,javascript,reactjs,Javascript,Reactjs,如果要呈现列表中的项目列表,如下所示: render() { return ( <List> {() => { return items.map(item => { return ( <ListItem key={item.id} item={item} /> );

如果要呈现列表中的项目列表,如下所示:

render() {
  return (
    <List>
      {() => {
        return items.map(item => {
          return (
            <ListItem
              key={item.id}
              item={item}
            />
          );
        });
      }}
    </List>
  );
}
render() {
  let itemACount = 0;
  return (
    <List>
      {items.map(item => {
          if(item.type === 'typeA') {
             if(itemACount === 0) {
                 itemACount ++;
                 return (<ItemWrapper><TypeAComponent item={item}/></ItemWrapper>)
             }
             return <ItemWrapper><NewWrapper>{item}</NewWrapper></ItemWrapper>
          }
          return (
            <ItemWrapper><TypeBComponent item={item}/></ItemWrapper>
          );
        });
      }
    </List>
  );
}
render(){
返回(
{() => {
返回items.map(item=>{
返回(
);
});
}}
);
}
传递到ListItem的项基本上可以是两种不同的类型,我想有条件地对其进行更改,请参见下面示例中的注释

render() {
  const { item } = this.props
  switch (item.__typename) {
    case "TypeA":
      item = (
        <TypeAComponent item={item}/>
      );
      if (this is the second TypeA in the list) {
        item = <NewWrapper>{item}</NewWrapper>
      }
      break;
    case "TypeB":
      item = (
        <TypeBComponent item={item}/>
      );
      break;
  }
  return <ItemWrapper>{item}</ItemWrapper>
}
render(){
const{item}=this.props
开关(项目名称){
案例“A型”:
项目=(
);
如果(这是列表中的第二种类型A){
item={item}
}
打破
“B类”案例:
项目=(
);
打破
}
返回{item}
}

我可以想象,我在通过列表渲染中的项进行映射时进行此计算。有没有更好的方法来编写此内容?

您可以将第一个贴图循环更改为以下内容:

render() {
  return (
    <List>
      {() => {
        return items.map(item => {
          return (
            <ListItem
              key={item.id}
              item={item}
            />
          );
        });
      }}
    </List>
  );
}
render() {
  let itemACount = 0;
  return (
    <List>
      {items.map(item => {
          if(item.type === 'typeA') {
             if(itemACount === 0) {
                 itemACount ++;
                 return (<ItemWrapper><TypeAComponent item={item}/></ItemWrapper>)
             }
             return <ItemWrapper><NewWrapper>{item}</NewWrapper></ItemWrapper>
          }
          return (
            <ItemWrapper><TypeBComponent item={item}/></ItemWrapper>
          );
        });
      }
    </List>
  );
}
render(){
设itemACount=0;
返回(
{items.map(item=>{
如果(item.type=='typeA'){
如果(itemACount==0){
itemACount++;
返回()
}
返回{item}
}
返回(
);
});
}
);
}

您知道第n个数字吗?是的,它将是文件顶部的一个常量,就像我们可以说5一样,您将项目作为数据道具传递。是这样还是我遗漏了什么是的,是的,对不起,错了