node.js - react-redux 状态在 redux devTools 中工作,但无法将其呈现到页面?
问题描述
我正在尝试使用 react-redux 向我的后端发出 get 请求,当我查看 redux 开发工具时,我看到状态已更新并且产品已放入状态中(这很好),但是当我尝试映射产品或console.log(products)
它给我未定义,我正在学习一个教程,我正在完全按照教练的方式做,这是我的代码我做错了什么?
import { useDispatch, useSelector } from "react-redux";
import { listProducts } from "../../actions/productActions";
const Home = () => {
const dispatch = useDispatch();
const productList = useSelector((state) => state.productList);
const { loading, error, products } = productList;
useEffect(() => {
dispatch(listProducts());
}, [dispatch]);
return <div className="card-div mt-5">{products.map((product) => {
<h1>{product.name}</h1>;
})}</div>; //TypeError: Cannot read property 'map' of undefined
};
这是我的开发工具,可确保您更新状态并正确获取数据:
解决方案
在尝试映射它们之前检查 productList 是否存在。
尝试这个:
const Home = () => {
const dispatch = useDispatch();
const productList = useSelector((state) => state.productList);
const { loading, error, products } = productList;
useEffect(() => {
dispatch(listProducts());
}, [dispatch, listProducts]);
return <div className="card-div mt-5">{!! products && products.map((product) => {
<h1>{product.name}</h1>;
})}</div>; //TypeError: Cannot read property 'map' of undefined
};
尝试将 listProducts 添加到您的 useEffect 调用的参数数组中。
推荐阅读
- android - MediaRecorder Surface Input with OpenGL - 如果启用了音频录制,则会出现问题
- python - 如何在不依赖列名的情况下操作数据框的值
- ios - 在 Flutter 中监听方向状态;旋转前后
- python - Assigning global attribute name using a parameter in netCDF4
- memory - 每个页面错误都有磁盘访问吗?
- apache-flink - 具有本地执行环境的 Flink 保存点(如独立应用程序)
- c# - 容器停止时关闭 Docker 端口
- python-3.x - 使用“for”循环为 df 中的每一列创建 Plotly 绘图
- emscripten - 断言失败:在 .js 文件 (emscripten) 中调用 c 函数时,在运行时初始化错误之前调用了本机函数 `int_sqrt`
- python - 通过 request.post 发送数据字段