【发布时间】:2026-02-10 21:45:01
【问题描述】:
我正在做一个简单的提取,将其存储在状态中,然后尝试将该 json 输出到页面。我不明白这段代码有什么问题以及为什么我得到“hello.map 不是函数”:
Google 告诉我这可能是因为我的数据中有括号,或者更确切地说是一个对象?但我认为情况并非如此,否则向控制台吐出的数据不会说它是一个数组?:
代码可以很好地处理这样的数据:
const clients = [
{
client: "Client 1",
codename: "client1"
},
{
client: "Client 2",
codename: "client2"
}
];
上面的数据算不算有括号?
import React, {useState, useEffect} from 'react';
const Todos = () => {
const [hello, setHello] = useState(false);
useEffect(() => {
fetchSomething();
}, []);
const fetchSomething = () => {
fetch('https://jsonplaceholder.typicode.com/posts')
.then(response => response.json())
.then(json => {
console.log(json);
setHello(json);
})
}
return (
<div>
{hello.map((client, clientIndex) => {
return (
<div className="tile" key={clientIndex}>
<span>{client.body}</span>
</div>
)
})}
</div>
)
}
export default Todos;
那么我应该使用 Object.keys 之类的东西吗?:
{Object.keys(hello).map(key => {
<span>{key.body}</span>
})}
上述没有错误,但我似乎无法获取我认为我嵌套不够低或其他什么的数据。
我使用 .map 比使用 Object.keys 多,所以我更喜欢使用它,但我想我需要以某种方式操纵数据才能使用 .map,所以对于此类数据的推荐方法是使用 Object .keys 还是有其他流行的方法?
无论如何,我们将不胜感激。
谢谢
【问题讨论】:
-
试试这个 --> ` {(hello || []).map((client, clientIndex) => `
-
你用布尔值
const [hello, setHello] = useState(false);初始化hello,因此你不能在它上面调用map。用一个空数组初始化它,比如const [hello, setHello] = useState([]); -
@Martin 非常感谢,这么简单的解决方案,绝对不会发现这个问题。
标签: arrays json reactjs dictionary object