[英]map function is not defined when calling products object in react redux
I am trying to display all my products from a fake api to my homescreen.我正在尝试将我的所有产品从假 api 显示到我的主屏幕。 I am using react redux to manage the state.
我正在使用反应 redux 来管理 state。 When i console log the products object I get null so i dont think im getting anything from the call.
当我控制台记录产品 object 我得到 null 所以我不认为我从电话中得到任何东西。
import React, { useEffect } from 'react'; import Product from '../components/product'; import { useDispatch, useSelector } from 'react-redux'; import { listProducts } from '../actions/productActions'; export default function HomeScreen() { const dispatch = useDispatch(); const productList = useSelector(state => state.productList); const { products } = productList; useEffect(() => { dispatch(listProducts({})); },[dispatch]); return ( <div> <div className="row center"> {products.map((product) => ( <Product key={product.id} product={product}></Product> ))} </div> </div> ); }
import { PRODUCT_LIST_FAIL, PRODUCT_LIST_REQUEST, PRODUCT_LIST_SUCCESS } from "../constants/productConstants"; const productListReducer = ( state= {loading: true, products: [] }, action ) => { switch(action.type) { case PRODUCT_LIST_REQUEST: return{loading:true} case PRODUCT_LIST_SUCCESS: return {loading:false,products:action.payload} case PRODUCT_LIST_FAIL: return {loading:false,error:action.payload} default: return state } } export default productListReducer
Initialy products array is not defined, so you should add a condition like this Initialy products 数组未定义,因此您应该添加这样的条件
export default function HomeScreen() {
const dispatch = useDispatch();
const productList = useSelector(state => state.productList);
const { products } = productList;
useEffect(() => {
dispatch(listProducts({}));
},[dispatch]);
return (
<div>
<div className="row center">
{!!products && products.map((product) => (
<Product key={product.id} product={product}></Product>
))}
</div>
</div>
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.