【发布时间】:2021-03-02 16:59:44
【问题描述】:
我想对新闻进行分页,或者使用无限滚动,但由于网站是建立然后作为静态文件提供的,我不确定最好的方法是什么?
是否可以不使用 apollo 或 react-query?
我确实尝试过 react-query,但无法让它看到我的 datoCMS 端点。
(更新:关于承诺的评论)
import React from 'react'
import { useQuery } from 'react-query'
import gql from 'graphql-tag'
import { GraphQLClient, request } from 'graphql-request'
export const useGQLQuery = (key, query, variables, config = {}) => {
const endpoint = `https://graphql.datocms.com/`
const client = new GraphQLClient(endpoint, {
headers: {
authorization: `Bearer MY_TOKEN_HERE`
}
});
// use await to wait until promise has been fulfilled
const fethData = async () => await request(endpoint, client, query, variables)
return useQuery(key, fethData, config); // useQuery from react-query
};
const GET_ALL_NEWS_CONTENT = gql`
query {
allNews {
slug
id
title
}
}
`;
const AllNews = () => {
// Fetch data from custom hook that uses React-Query
const { data, isLoading, error } = useGQLQuery('allNews', GET_ALL_NEWS_CONTENT)
console.log(data)
if (isLoading) return <div>Loading…</div>
if (error) return <div>Something went wrong…</div>
return (
<>
<div className="generic-page">
<h2>All News</h2>
<div>
{data.allNews.map(news => (
<div key={news.title}>{news.title}</div>
))}
</div>
</div>
</>
)
};
export default AllNews;
【问题讨论】:
-
不是答案,但 react-query 看不到或看不到任何东西。它希望您返回一个 Promise,实际的数据获取可以根据您的需要进行。也可以回
Promise.resolve(5)??????♂️ -
啊,谢谢你解释了为什么我的代码有错误!你能指出我上面代码中的下一步吗?
-
我需要了解什么不起作用。代码看起来没问题。
标签: pagination apollo infinite react-query