【发布时间】:2021-10-20 04:18:58
【问题描述】:
我知道这是一个常见问题,因为我在过去的两个小时里都在检查每个答案并试图更新我的状态,但没有任何效果。
我正在从 cms 获取文本,但是在第一次加载时状态未定义并且我的应用程序崩溃了。但是,如果我注释掉该行,加载页面并取消注释该行会显示正确的值。
这是我尝试过的一些代码。
我希望得到的数据
[
{id:1},
{id:2},
{id:3},
{id:4},
]
import react, {useEffect, useState} from 'react'
import axios from 'axios'
const [carouselTitle, setCarouselTitle] = useState([])
useEffect(() => {
fetchData();
}, []);
const fetchData = async () => {
await axios('api').then(
response => {
console.log(response.data)
setCarouselTitle(response.data)
console.log(carouselTitle)
})
};
return(
<h1>{carouselTitle[1].id}</h1>
)
控制台记录数据工作正常,但是当我控制台记录状态时它不起作用。
我尝试的第二种方法
useEffect(() => {
const fetchData = async () => {
const res = await axios('api');
const carouselTitleAlt = await res.data;
setCarouselTitle({ carouselTitleAlt });
console.log(carouselTitleAlt);
console.log(carouselTitle);
};
fetchData();
}, []);
再次控制台记录 useEffect 中的 const 会显示正确的信息,但记录状态不起作用。
感谢您的回复或显示数据的更好方式。
【问题讨论】:
-
你在 useEffect 之外尝试过
console.log(carouselTitle)吗? -
const [carouselTitle, setCarouselTitle] = useState([]- 这是一个错字吗?缺少正确的括号? -
@selbie 是的,抱歉,这是一个 * 错字可以确认我的代码有正确的括号!好地方寿:)
-
@matt_roki2 的回答对你有帮助吗?