【发布时间】:2020-11-28 22:57:47
【问题描述】:
对于我的 react-app/Express 应用程序,我尝试使用 useEffects 更新组件状态,以便在组件呈现时运行一次。在useEffect 中,我向快递服务器进行了抓取。
const Favorites = ({ user }) => {
const loggedIn = user.loginname === "" ? false : true;
const [favs, setFavs] = useState([]);
useEffect(() => {
if (loggedIn) {
fetch(`/user/favs/${user.loginname}`)
.then((resp) => resp.json())
.then((data) => {
console.log(data);
setFavs([...data]);
console.log(favs);
});
}
}, []);
return (
<div className="mt-d d-flex justify-content-center">
{loggedIn ? (
<FavoritesList favs={favs} />
) : (
<h3 className="my-2">Please login to use this feature</h3>
)}
</div>
);
};
我在第 11 行进行了 fetch 调用,并能够在第 14 行打印结果。然后我尝试更新
使用setFavs 的组件状态。我的问题是状态似乎没有更新,或者可能
存在一些异步问题。
const FavoritesList = ({ favs, prop }) => {
const [data, setData] = useState([]);
useEffect(() => {
console.log(favs);
// favs.forEach(item => console.log(item))
}, []);
return <h5>Dummy component</h5>;
};
当我尝试在第 16 行打印 favs 或在它被传递到的子 (FavoritesList) 组件中打印 favs 时,我得到一个空数组。
【问题讨论】:
标签: javascript reactjs fetch use-effect use-state