组件不在地图内呈现

Posted

技术标签:

【中文标题】组件不在地图内呈现【英文标题】:component does not render inside map 【发布时间】:2020-11-15 18:43:39 【问题描述】:

react 组件不会在 map 方法中渲染。我正在使用 ProductList 中的 map 方法调用 Product 组件,但它不会呈现。在 map 方法之外,它可以工作。我试图找到问题,但仍然找不到。我错过了什么吗?

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>
   );
 

产品.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=&gt;( 前面添加return 吗? 我也将其添加为答案。 :) 【参考方案1】:

我相信您在value.products.map(prod=&gt;( 前面缺少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>
    );
  


【讨论】:

以上是关于组件不在地图内呈现的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 React Hooks 在地图函数内动态和有条件地呈现选择选项

谷歌地图不能在模态弹出窗口上呈现

如何解决文本字符串必须在嵌套地图中的 <Text> 内呈现?

React - onClick() 事件不在地图功能中显示点击项目的信息

地图内的 if 语句

从 mapView 中检索当前用户位置,而地图不在屏幕上