【发布时间】:2020-02-07 06:53:43
【问题描述】:
我是 React 的初学者。我有 2 种不同的情况,我使用 React Hooks 无法正确接收来自本地 API 的数据。
案例一:
export const RegisterT = () => {
const [test, setTest] = useState()
const addrState = {}
axios.get('http://127.0.0.1:3333/states', { addrState })
.then(res => {
setTest(res.data)
console.log(test)
})
...
}
它适用于状态 test 正确显示来自 API 的内容,但我不知道 Axios 为何/如何继续无限调用 API - 无穷无尽。 (Ps:第一次调用它返回未定义,然后下一个调用它工作)我做错了什么?
为了解决这个问题,我尝试像这样使用useEffect(案例 2):
export const RegisterT = () => {
const [test, setTest] = useState()
const addrState = {}
useEffect(() => {
axios.get('http://127.0.0.1:3333/states', { addrState })
.then(res => {
setTest(res.data)
console.log(test);
})
}, [])
...
}
现在 Axios 只工作一次,但没有数据来自 API。也许我应该在这种情况下使用异步/等待,但我不能让它工作。有谁知道如何解决这个问题(案例 1 或/和案例 2)?
谢谢。
【问题讨论】:
-
我认为Case2是正确的,但是记住更新状态是一个异步操作,这意味着当你尝试
console.log时test仍然没有更新,请尝试移动console.log在useEffect钩子之外再次检查。
标签: reactjs axios use-effect