当前位置:  开发笔记 > 编程语言 > 正文

在无状态组件中遍历子代反应/反应本机

如何解决《在无状态组件中遍历子代反应/反应本机》经验,为你挑选了1个好方法。

我正在开发本机应用程序,并为显示列表项创建了一个通用组件。


  
     
     
  

现在,我的ItemListSeparator只是遍历子项并呈现列表,所以我认为我应该使它成为无状态组件。

const ItemsWithSeparator = function ({children,style}) {
  const childrenList = [];
  const length = React.Children.count(children);
  React.Children.forEach(
    children,
    (child,ii) => {
      childrenList.push(child);
      if (ii !== length -1) {
        childrenList.push(
          
        );
      }
    }
  );
  return (
    
      {children}
    
  );
};

但这会引发错误,提示未找到“反应”。

但是,它可以与基于类的组件一起很好地工作。以下是运行良好的代码。

class ItemsWithSeparator extends React.Component {

  render () {
    const {children,style} = this.props;
    const childrenList = [];
    const length = React.Children.count(children);
    React.Children.forEach(
      children,
      (child,ii) => {
        childrenList.push(child);
        if (ii !== length -1) {
          childrenList.push(
            
          );
        }
      }
    );
    return (
      
        {children}
      
    );
  }
}

谁能帮我理解这一点?TIA!

更新:

我只是尝试了一些尝试,显然让他工作了:-

const ItemsWithSeparator = function ({children,style,...props}) {
  const childrenList = [];
  const length = React.Children.count(children);
  React.Children.forEach(
    children,
    (child,ii) => {
      childrenList.push(child);
      if (ii !== length -1) {
        childrenList.push(
          
        );
      }
    }
  );
  return (
    
      {children}
    
  );
};

但是我仍然对此工作还是有些困惑。如果有人可以解释,我真的很棒。



1> Henrik R..:

这是重构版本,因此您不必执行此怪异的React.Children东西:D注意,映射子级时可以返回数组。如果需要,您可以在其中进行if语句。

const ItemsWithSeparator = ({children, style, ...props}) => {
  const finalFields = children.map((child, index) => {
    return [
      child,
      index !== children.length - 1 && (
        
      )
    ];
  });

  return (
    
      {finalFields}
    
  );
};

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有