首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组件在嵌套循环中不返回。

组件在嵌套循环中不返回。
EN

Stack Overflow用户
提问于 2022-06-02 10:10:42
回答 2查看 48关注 0票数 0

我试图在嵌套循环中呈现子组件。但是,在第二个循环中没有呈现它(红色勾选)。虽然它通常在第一个循环中呈现(蓝色勾选)。请突出显示为什么在第二个循环中没有呈现。

https://i.stack.imgur.com/LFiKU.png

代码框链接:https://codesandbox.io/s/competent-nova-u9rzuh?file=/src/parent.js

代码语言:javascript
复制
import React from "react";
import ProductFeaturesCards from "./ProductFeaturesCards.js";
import { Products } from "../ProductsData.js";

const ProductFeatures = ({ className = "", id }) => {
  return (
    <section id='product-features' className={`${className}`}>
      <div className='container'>
        <div className='row d-flex justify-content-center'>
          <div className='col-lg-12 col-md-12 col-sm-12 col-12 py70'>
            <p className='features-title'>Product Features</p>
          </div>
        </div>
        <div className='row'>
          {Products.forEach((item, i) => {
            if (item.id === id) {
              // return <ProductFeaturesCards data={item} key={i} />;
              Object.values(item.Product_features[0]).map((feature, index) => {
                console.log("ProductFeaturesCards:", feature);
                return <ProductFeaturesCards data={feature} key={index} />;
              });
            }
          })}
        </div>
      </div>
    </section>
  );
};

export default ProductFeatures;

EN

回答 2

Stack Overflow用户

发布于 2022-06-02 10:40:30

你能试试这个吗。不确定这能不能用

代码语言:javascript
复制
 if (item.id === id) {
      // return <ProductFeaturesCards data={item} key={i} />;
      return Object.values(item.Product_features[0]).map((feature, index) => {
           console.log("ProductFeaturesCards:", feature);
           return <ProductFeaturesCards data={feature} key={index} />;
      });
 }
票数 0
EN

Stack Overflow用户

发布于 2022-06-02 12:07:48

您所犯的第一个错误是使用forEach。forEach将对数据进行变异,不会返回任何内容。因此,您需要使用map,它不会发生变异并返回结果。

第二个错误是在地图的if条件中没有添加返回语句。因此,它永远不会被返回,因此您的第一个映射将不会接收值。

在此之后,您应该能够运行它。

代码语言:javascript
复制
<div className="row">
          {Products.map((item) => { // replaced forEach with map
           if (item.id === id) {
            return Object.values(item.Product_features[0]).map( // return added
                (feature, index) => {
                  return <Card data={feature} key={index} />;
                }
            );
           }
          })}
</div>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72474464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档