我想从theMovieDB应用编程接口随机化电影。首先,我发送一个请求来访问最新条目的ID:
const { loading: loadingLatest, error: errorLatest, data: latestData, refetch: refetchLatest } = useQuery(
LATEST_MOVIE_QUERY
);然后,我想从一个随机选择的id中获取数据,该ID介于1和最新id的编号之间。使用依赖于第一个查询的变量似乎会破坏应用程序,所以现在我只是在每次挂载组件时使用相同的电影:
const [
movieState,
setMovieState
] = useState(120);
const { loading, error, data, refetch } = useQuery(ONE_MOVIE_BY_ID_QUERY, {
variables : { movieId: movieState },
skip : !latestData
});我想按一个按钮来获取一个新的随机电影,但问题是API中的许多I导致删除条目,然后我得到一个错误。我想继续刷新,直到我得到一个好的响应,但我不知道如何实现它。现在,我的随机化函数看起来就像这样:
const randomizeClick = () => {
let mostRecentID = latestData.latestMovie.id;
setMovieState(Math.floor(Math.random() * mostRecentID));
};如果有人能帮我实现这一点,我将不胜感激。
发布于 2020-01-13 04:02:13
我认为你需要的是阿波罗的"useLazyQuery“功能。你可以在这里找到更多关于它的信息:https://www.apollographql.com/docs/react/data/queries/#executing-queries-manually
有了useLazyQuery,你可以很容易地改变你的变量,这意味着在某个事件(点击或类似的事件)后触发。挂载组件时将加载useQuery功能。
https://stackoverflow.com/questions/59706519
复制相似问题