javascript - 使用 redux 中的操作在 useEffect 中获取数据
问题描述
我正在尝试在 useEffect 中获取我的数据,但是每次当我尝试将其作为道具发送到另一个组件(产品)时,我都会得到一个空数组
产品列表.js
import React, { useEffect, useState } from "react";
import { connect } from "react-redux";
import { fetchProducts } from "../actions/products";
import { Product } from "./Product";
const ProductList = ({ getProducts, products, loading }) => {
useEffect(() => {
getProducts();
}, []);
return (
<div className="p-4">
<Product products={data} />
</div>
);
};
const mapStateToProps = state => ({
products: state.products,
loading: state.loading
});
const mapDispatchToProps = {
getProducts: fetchProducts
};
export default connect(mapStateToProps, mapDispatchToProps)(ProductList);
这里是我的 Product.js
import React from "react";
export const Product = props => {
const products = props.products.map(product => {
return (
<div className="col-lg-4 mb-4" key={product.Id}>
<div className="card shadow-sm">
<img
className="card-img-top"
src={`/images/${product.Id}.jpg`}
alt={product.name}
/>
<div className="card-body">
<h5 className="card-title">
{product.name}{" "}
<span className="badge badge-warning">${product.price}</span>
</h5>
<a href="#" className="btn btn-secondary mx-auto">
Add to cart
</a>
</div>
</div>
</div>
);
});
return <div className="row">{products}</div>;
};
我需要获取数据并发送到产品组件
解决方案
看起来您的数据从未传递到 ProductList 组件中(ProductList 中没有对数据道具的引用)。
我相信您正在尝试将产品数据传递到产品组件中。这是你可以做的。
const [newProducts, setNewPropducts] = useState([]);
//add this useEffect and keep your other one
useEffect(() => {
//set state for products here
setProducts(products)
}, [products]);
<Product products={newProducts} />
推荐阅读
- google-chrome-extension - Vue Devtools 落后于应用程序事件
- odoo - 如何修改脚手架命令的文件和文件夹结构?
- c# - 如何在 C# 中将变量从一种形式导出/导入到另一种形式?
- c# - .NET 5.0 中的 Microsoft.VBE 参考不可用
- microsoft-graph-api - 仅限应用令牌 - Microsoft Graph - 首选语言
- node.js - Nodejs如何使用ajax发送经过身份验证的请求
- database-design - 将计算值用作聚合表中的维度是个坏主意吗?
- c++ - 在头文件中找不到“torch/torch.h”文件
- rxjs - 用 ConcatMap 替换 SetTimeout
- laravel - 由于依赖关系,将 Laravel 更新到 7x 失败,composer update -w 不起作用