reactjs - 无法从 React 中获取的资源中读取数据。(无法读取未定义的属性“backdrop_path”)
问题描述
我已经从端点获取了一些数据并将其存储在状态中。当我尝试在控制台中查看结果时,它工作正常。但是当我尝试在组件中使用它时,它会抛出一个错误,告知密钥未定义。这是我的代码,并且heroImage未定义,请帮助
const Home = () => {
const [state, setState] = useState({ movies: [] });
const [isLoading, setIsLoading] = useState(false);
const [isError, setIsError] = useState(false);
const fetchMovies = async endpoint => {
setIsError(false);
setIsLoading(false);
const params = new URLSearchParams(endpoint);
if (!params.get("page")) {
setState(prev => ({
...prev,
movies: [],
searchItem: params.get("query")
}));
}
try {
const result = await fetch(endpoint)).json();
setState(prev => ({
...prev,
movies: [...prev.movies, result.results],
heroImage: prev.heroImage || result.results[0],
currentPage: result.page,
totalPage: result.total_pages
}));
} catch (error) {
setIsError(true);
}
setIsLoading(false);
};
useEffect(() => {
fetchMovies(`${API_URL}movie/popular?api_key=${API_KEY}&page=1`);
}, []);
return (
<>
<div className="rmdb-home">
<div>
<HeroImage
image={`${IMAGE_BASE_URL}${BACKDROP_SIZE}${state.heroImage.backdrop_path}`}
/>
<SearchBar />
</div>
</div>
</>
);
};
解决方案
因为您的组件在首次渲染时尝试访问heroImage
,但未定义
heroImage
所以你需要一个初始状态
const [state,setState]=useState({movies:[], heroImage: {}})
推荐阅读
- javascript - 如何在 Bitbucket 的拉取请求中修复缩进/对齐?
- python - 单击按钮查看 pdf 后,Tkinter GUI 变得无响应
- mysql - 什么时候需要类型转换 SQL 列?
- javascript - 是否可以动态调用方法?
- opengl - 无法理解合并实例的概念
- c# - System.ServiceModel.Primitives 上的 System.IO.FileLoadException
- r - 在 R Shiny 应用程序中停用“忙碌状态”
- angular - ng build 在 VSTS 中挂起
- java - 如何从数据库中创建 JavaFX 自定义查找搜索小部件
- c - 在 c 语言中仍然使用 %c 时将 int 转换为 char