简体   繁体   English

在反应 Z7490FE17CAEC373F228809D65B6EZ20E 中调用产品 object 时未定义 map function

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM