组件不在地图内呈现

component does not render inside map

react 组件不会在 map 方法中呈现。我正在使用 ProductList 中的 map 方法调用 Product 组件,但它没有呈现。在地图方法之外,它有效。我试图找出问题所在,但还是找不到。我错过了什么吗?

context.js

import React, { Component } from 'react';
import {storeProducts,detailProduct} from './data';

const ProductContext=React.createContext();

class ProductProvider extends Component{

    constructor(props)
    {
        super(props);
        this.state={
            products:storeProducts,
            detailProduct:detailProduct
        }
    }

    render()
    {
        return(
            <ProductContext.Provider value={{...this.state}}>
             {this.props.children}
            </ProductContext.Provider>
        );
    }
}


const ProductConsumer=ProductContext.Consumer;

export {ProductContext,ProductProvider,ProductConsumer};

ProductList.js

class ProductList extends Component {

 render() {
    return(
      <React.Fragment>
         <ProductConsumer>
              {
                 value=> {
                      value.products.map(prod=>(
                            <div>
                               {console.log(prod)}
                               <Product/> // this component does not render
                            </div>
                      ))
                  }
               }
          </ProductConsumer>
       </React.Fragment>
   );
 }
}

Product.js

class Product extends Component {
    render() {
        return (
            <div>
                <h2>Hello From Product</h2>
            </div>
        );
    }
}

index.js

<ProductProvider>
    <Router>
    <App />
    </Router>
</ProductProvider>

我相信您在 value.products.map(prod=>( 前面漏了一个 return。类似于:

class ProductList extends Component {
  render() {
    return (
      <React.Fragment>
        <ProductConsumer>
          {(value) => {
            return value.products.map((prod) => (
              <div>
                {console.log(prod)}
                <Product /> 
              </div>
            ));
          }}
        </ProductConsumer>
      </React.Fragment>
    );
  }
}