【发布时间】:2020-03-04 02:27:32
【问题描述】:
我正在构建一个简单的应用程序,用于从电影数据库中搜索电影。 搜索输入成功获取 apiData 并将其设置为具有相同值的电影。
我正在努力映射和显示电影的标题并得到错误 apiData.map is not a function
数据是状态数据是一个对象数组。
我想从对象访问标题,即
{title: 'mad max'} 并显示这个。
这是代码
const SearchPage = () => {
const [apiData, setApiData] = useState({ results: {} });
const [searched, setSearched] = useState([]);
const [loading, setLoading] = useState(false);
const handleSearch = (event) => {
setSearched(event.target.value);
};
useEffect(() => {
setLoading(true);
fetchSearched(searched).then((data) => setApiData(data.results));
setLoading(false);
}, [searched]);
return (
<>
<form className='search-form'>
<input
type='text'
placeholder='search for a film'
onChange={(event) => handleSearch(event)}
/>
</form>
// code below causes error when un-commented
{/* <SearchList apiData={apiData} /> */}
</>
);
};
const SearchList = ({ apiData }) => {
return (
<div className='search-list'>
SEARCH LIST
<ul>
{apiData.map((movie) => {
return <SearchItem movie={movie} key={movie.id} />;
})}
</ul>
</div>
const SearchItem = ({ movie }) => {
return (
<div className='search-item'>
<li>{movie.title}</li>
</div>
来自 API 的映射数据一直让我感到困惑,因此我们将不胜感激。
【问题讨论】:
-
您是否收到错误消息?您也可以为我们控制台记录您的 apiData 吗?
-
你的意思是将
apiData初始化为{ results: [] }吗?另外,当您将apiData传递给SearchList时,您的意思是传递apiData.results吗?确保您与设置apiData的内容一致。是对象吗,result是数组?
标签: reactjs react-hooks