Я играл с API и создавал приложение реакции для отображения данных. После отправки моей информации (через форму) для запроса (через ax ios) я установил состояние с помощью метода setState React Hooks, но это не очень хорошо работает, это создает редкое поведение. Я знаю, что должен использовать Эффект, но я не знаю, как.
это часть кода, в которой я устанавливаю состояние:
function Home() {
const [search, setSearch] = useState('')
const [visibleMsj, setVisibleMsj] = useState(false)
const [pokemon, setPokemon] = useState({})
const handleSearch = async (e) => {
e.preventDefault();
if(search === ''){
setVisibleMsj(true)
} else {
setVisibleMsj(false)
searchForPokemon()
}
};
const searchForPokemon = async () => {
const res = await getPokemon(search)
setPokemon(res)
console.log(pokemon)
}
Это функция, которая отправляет запрос ( в другом файле):
import axios from "axios";
const getPokemon = async (name) => {
return await axios
.get(`https://pokeapi.co/api/v2/pokemon/${name}`)
.then(function (response) {
return response.data;
})
.catch(function (err) {
console.log(err);
});
};
export { getPokemon };
и, наконец, форма, которая выполняет метод в событии submit:
<Form onSubmit={handleSearch} id="form">
<Form.Field>
<Form.Input
icon="search"
placeholder="Search by name or id..."
name="pokemon"
onChange={(event) => setSearch(event.target.value)}
value={search}
/>
</Form.Field>
</Form>
Но в консоли я получаю это при отправке запроса: Консоль в веб-браузере
Итак, что происходит с государством ?. Кроме того, мне нужно отобразить атрибуты переменной состояния 'pokemon' ниже формы (внутри рендера), и я не могу получить эти атрибуты, возможно, потому что первое значение при монтировании - {}?.
Заранее спасибо.