我是React的新手,并试图了解函数组件中的挂钩。我在应用程序的公共目录中的本地. json文件中有一个Products对象数组。在我的src目录中,我有我的Products组件。我需要将. json数据带入该组件并在页面上呈现它。我使用useState()挂钩来设置产品和setProducts const。然后我使用getData函数获取json数据,该函数使用该数据调用setProducts(我认为)。getData()在useEffects挂钩中被调用。然后我使用. map函数将其呈现到页面。
我添加了一个语句来检查数据是否已获取,但是现在浏览器中没有任何渲染,console.log(产品)给我一个空数组,所以我知道数据设置不正确。
代码如下:
import React, { useState, useEffect } from 'react';
export default function Products() {
const [products, setProducts]=useState([]);
const getData=()=>{
fetch('data.json'
,
{
headers : {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
}
)
.then(function(response){
console.log(response)
return response.json();
})
.then(function(myJson) {
console.log(myJson);
setProducts(myJson)
});
}
useEffect(()=>{
getData()
},[])
return (
<div>
<ul className="products">
{products.length > 0 && products.map(product => (
<li key={product._id}>
<div className="product">
<a href={"#" + product._id}>
<img src={product.image} alt={product.title} />
<p>
{product.title}
</p>
</a>
<div className="productPrice">
<div>
{product.price}
</div>
<button className="button primary">
Add to cart
</button>
</div>
</div>
</li>
))}
</ul>
</div>
);
}
检查响应是否为空,代码中的其他内容是否正确。
编辑
然后设置产品(myJson.body)。因为现在YOU正在将产品设置为整个响应对象,而不是响应的主体。如果不是一系列产品,也可以从身体中设置所需内容
您需要等待通过这样的操作获取产品
<ul className="products">
{ products.length > 0 && products.map(product => (
<li key={product._id}>
// ...
}
</ul>
如何使用如下变量设置State: 请帮忙,我做这件事有困难。
我有一个设置活动在Android Studio,用户将在文本框中输入一个名称。他们将点击保存并进入另一个活动,他们的名字将显示在文本视图中。我在尝试在文本视图中显示名称时遇到了麻烦,我尝试了一些不同的方法,并得到了一些不同的错误,这可能是一些简单的东西,我没有得到或忽略。这是我的错误代码 我的错误是:
问题内容: 这是我的PostgreSQL函数: 它有一个参数,我想通过JPQL 将Java传递给它: 上面的代码失败,但例外: 所以我不确定如何从EclipseLink调用我的函数。 问题答案: 通过将String []类型的Java数组传递给您进行测试,以进行测试。似乎PgJDBC不接受Java数组作为带有或不带有参数的参数。 合规 JDBC规范 16.5“数组对象” 建议JDBC 部分存在,因
问题内容: 我有一个本地JSON对象,其格式如下: 我想设置此作为一个jQuery的数据源的数据表,并尝试这样的: DataTables插件加载并尝试绘制表,但显示错误“表中无可用数据” 我不是在进行AJAX调用,只是想从本地JS变量访问JSON对象。 问题答案: 提供您自己的数据的属性不是: 工作小提琴
问题内容: 我正在尝试将HikariCP与Spring一起用于连接池。我正在使用jdbcTempLate和JdbcdaoSupport。 这是我用于数据源的spring配置文件: 但不幸的是,正在生成以下错误消息: 谁能告诉我如何解决这个问题? 问题答案: 你需要在bean配置上编写此结构(这是你的数据源): 这是我的示例,正在运行。你只需要将属性放在hibernate.properties上
我想在运行时根据某些条件将组设置为特定的@测试方法 假设我有以下课程 现在,在运行测试时,我正在命令行中将“-groups group1”或“-groups group2”发送到TestNG。因此,testng根据传递的组名运行test2()或test3()。现在,我的要求是运行test1(),它不应该附加任何组。无论我向testng runner提供什么组,每次都应该运行这个test1()。我尝