首页 > 解决方案 > 无法将 React 状态设置为对象数组

问题描述

我正在尝试通过 Axios 获取请求将 React 状态设置为对象数组。但是,当我尝试更新状态时,它显示为一个空数组。

我知道我从 API 收到了正确的响应,所以我认为在更新状态时我遗漏了一些东西。

这是我的代码:

const Home = () => {
const [movieTitle, setMovieTitle] = useState('');
const [searchResults, setSearchResults] = useState([]);

const handleChange = (e) => {
    setMovieTitle(e.target.value);
};

const getMovieData = () => {
    const apiKey = 'didntleakit';
    const apiUrl  = 'http://www.omdbapi.com/?apikey=' + apiKey + '&s=' + movieTitle;
    Axios.get(apiUrl)
        .then((res) => {
            setSearchResults(res.data.Search);
        });
    console.log(searchResults);
};

return(
    <div>
      <p>Home page</p>
      <TextField defaultValue="Movie" onChange={(e) => handleChange(e)}/>
      <button onClick={getMovieData}/>
    </div>
);

};

标签: reactjsaxios

解决方案


setState在将状态变量设置为异步后,您无法立即记录它。您可以在 a 中记录更新的状态useEffect

import {useEffect} from 'react'

useEffect(() => {
  console.log(searchResults);
}, [searchResults])

推荐阅读