我在从 useSelector 中获取数据时得到了未定义的数据

I got undefined data while getting it from useSelector in react

我正在制作一个电子商务网站,我在前端使用 react 和 redux,在服务器端使用 express。当我尝试从 useSelector hook 访问 redux 存储的数据时,我得到了未定义,但是当我在 action 中 console.log() 它时,我得到了数据。请帮助我这两天一直在努力解决这个问题。

我收到此错误:类型错误:无法读取未定义的属性(读取 'map')

这是我的主屏幕代码

const dispatch = useDispatch();
const productList = useSelector((state) => state.productList);
const { products } = productList;
console.log("Product List : ", products);

useEffect(() => {
  dispatch(listProducts());
}, [dispatch]);

return (
 <div>
   {products.map((data, id) => {
     return (
       <div className="product_div" key={id}>
         <Products data={data} />
       </div>
     );
   })}
 </div>

);

这是针对 productAction 的:

import {
 PRODUCT_LIST_FAILURE,
 PRODUCT_LIST_REQUEST,
 PRODUCT_LIST_SUCCESS,
} from "../Constants/productConstants";

export const listProducts = () => async (dispatch) => {
 dispatch({ type: PRODUCT_LIST_REQUEST });
 try {
  const res = await fetch("/products", {
    method: "GET",
    headers: {
      "Content-Type": "Application/Json",
    },
  });
const data = await res.json();
console.log("Product Data : ", data);
dispatch({ type: PRODUCT_LIST_SUCCESS, payload: data });
} catch (error) {
  dispatch({ PRODUCT_LIST_FAILURE, payload: error });
}

};

**我在这里得到了数据**

但它显示产品在 HomeScreen.js

中未定义

Tro 在 HomeScreen 组件中添加未定义的检查并在其中 return 加载消息。
这应该避免导致您的应用程序崩溃,并在数据准备就绪后呈现数据。

...

if (!products) {
    return <div>Loading products...</div>
}

return (
 <div>
   {products.map((data, id) => {
     return (
       <div className="product_div" key={id}>
         <Products data={data} />
       </div>
     );
   })}
 </div>