组件不在地图内呈现
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>
);
}
}
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>
);
}
}