У меня проблемы с использованием состояния обновления useState при отправке.
Это простое погодное приложение для изучения React Hooks. Я прочитал в блоге Дэна Абрамова несколько раз о том, как использовать useEffect. Я пытался найти что-то похожее на мою проблему на Stackoverflow, но он не щелкает.
const [search, setSearch] = useState('')
// Query term
const [query, setQuery] = useState('indianapolis')
// API search results
const [data, setData] = useState([])
useEffect(() => {
let didCancel = false
const getWeather = async () => {
try {
const response = await fetch(`${baseUrl}?
q=${query}&APPID=${apiKey}`)
const data = await response.json()
if (!didCancel) {
setData(data)
}
} catch (error) {
if (!didCancel) {
throw new Error()
}
}
}
getWeather()
return () => {
// useEffect cleanup function
didCancel = true
}
}, [query])
const getSearchResults = e => {
e.preventDefault()
setQuery(search)
props.history.push('/weather', [data])
setSearch('')
}
Я ожидаю, что функция getSearchResults () обновит функцию setQuery поисковым термином. Я использовал console.log и обнаружил, что мое состояние было на шаг позади. Когда я ищу, первое возвращаемое значение является моим начальным значением запроса. Любая помощь будет оценена.