我已经使用 useEffect 获取了数据,并且还在控制台上获取了数据。我调用了 setState 方法来更新状态,但是 .map 函数不起作用。即使在控制台上也没有发生任何事情。
import React, { useState, useEffect } from "react";
function HomePage() {
const [isFlipped, setIsFlipped] = useState(false);
const [cardData, setCardData] = useState([]);
// useEffect function
useEffect(async () => {
const url = "https://rickandmortyapi.com/api/character";
const fetchData = async () => {
try {
const response = await fetch(url);
const json = await response.json();
const jsonData = json.results;
setCardData(jsonData);
console.log(jsonData);
} catch (error) {
console.log("error", error);
}
};
fetchData();
}, []);
const handleClick = () => {
setIsFlipped(!isFlipped);
};
return (
<>
{cardData.map((c) => {
<h1>{c.id}</h1>;
})}
</>
);
}
export default HomePage;
最佳答案
您的代码有一些错误:
以下代码适用于代码沙箱,如果您有任何问题,请告诉我。
export default function HomePage() { {
const [isFlipped, setIsFlipped] = useState(false);
const [cardData, setCardData] = useState(null);
// useEffect function
useEffect(() => { //removed async here
const url = "https://rickandmortyapi.com/api/character";
const fetchData = async () => {
try {
const response = await fetch(url);
const json = await response.json();
const jsonData = json.results;
setCardData(jsonData);
console.log(jsonData);
} catch (error) {
console.log("error", error);
}
};
fetchData();
}, []);
const handleClick = () => {
setIsFlipped(!isFlipped);
};
return (
<>
{cardData && cardData.map((c) => {
return <h1>{c.id}</h1>; //note here: return keyword
})}
</>
);
}
关于javascript - .map 在更新状态后没有重新渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71058584/