【发布时间】:2021-05-28 14:10:52
【问题描述】:
我有一个简单的 nextjs 应用程序,我想将状态保存并打印到 fetchData
这是我的代码
const Room = () => {
const router = useRouter();
const [fetchData, setFetchData] = useState("");
useEffect(() => {
if (router.asPath !== router.route) {
getDataNames();
console.log(fetchData); // Empty
}
}, [router]);
const getDataNames = async () => {
try {
await fetch("http://localhost:1337/rooms?_id=" + router.query.id)
.then((response) => response.json())
.then((jsonData) => setFetchData(jsonData) & console.log(jsonData)); // Data are logged in console
} catch (e) {
console.error(e);
}
};
问题是fetchData 在控制台日志上为空,但jsonData 给了我实际数据。而且我不知道可能是什么问题。
【问题讨论】:
-
做
setFetchData(jsonData) & console.log(jsonData)你实际上是在执行最后一个条件,它是console.log,尝试删除它,它会是setFetchData(jsonData)。 -
@AdriSolid 感谢您的想法。这就是我开始的,我刚刚添加了控制台日志以显示
jsonData中有数据,但很高兴知道setFetchData没有执行。但是删除后的结果还是一样的。
标签: javascript reactjs fetch next.js react-state-management