无法从 useEffect 更新 React 状态挂钩
Can't update React state hook from useEffect
我想用 useEffect 更新我的状态挂钩。不知何故,它给了我一个错误并破坏了我的应用程序。
Console.log 在控制台中给出了正确的答案,但不知何故反应不想将 setCountries 识别为状态挂钩函数。我在这里做错了什么?
import React, { useState, useEffect } from 'react'
import axios from 'axios'
var host = 'https://restcountries.eu/rest/v2/all'
const App = () => {
const { countries, setCountries } = useState([])
useEffect(() => {
axios
.get(host)
.then(response => {
console.log(response.data)
setCountries(response.data)
})
})
return (
<div>
</div>
)
}
export default App
我在浏览器中遇到错误
Unhandled Rejection (TypeError): setCountries is not a function
控制台错误:
Uncaught (in promise) TypeError: setCountries is not a function
at App.js:14
两件事:useState
returns 具有两个元素的数组,并且数组没有要解构的 countries
或 setCountries
键。你可以这样做:
const { 0: countries, 1: setCountries } = useState([]);
或者只是
const [countries, setCountries] = useState([]);
其次,useEffect(..)
没有任何第二个参数将导致效果在每次重新渲染时被触发 ,因此您的组件将陷入更新循环。使用一个空数组作为它的第二个参数,只在加载时触发效果。
我想用 useEffect 更新我的状态挂钩。不知何故,它给了我一个错误并破坏了我的应用程序。
Console.log 在控制台中给出了正确的答案,但不知何故反应不想将 setCountries 识别为状态挂钩函数。我在这里做错了什么?
import React, { useState, useEffect } from 'react'
import axios from 'axios'
var host = 'https://restcountries.eu/rest/v2/all'
const App = () => {
const { countries, setCountries } = useState([])
useEffect(() => {
axios
.get(host)
.then(response => {
console.log(response.data)
setCountries(response.data)
})
})
return (
<div>
</div>
)
}
export default App
我在浏览器中遇到错误
Unhandled Rejection (TypeError): setCountries is not a function
控制台错误:
Uncaught (in promise) TypeError: setCountries is not a function
at App.js:14
两件事:useState
returns 具有两个元素的数组,并且数组没有要解构的 countries
或 setCountries
键。你可以这样做:
const { 0: countries, 1: setCountries } = useState([]);
或者只是
const [countries, setCountries] = useState([]);
其次,useEffect(..)
没有任何第二个参数将导致效果在每次重新渲染时被触发 ,因此您的组件将陷入更新循环。使用一个空数组作为它的第二个参数,只在加载时触发效果。