![](/img/trans.png)
[英]Create a hook that can fetch data when I want and return a function to fetch and the data
[英]How can I fetch data to graphql server when I want
我正在尝试使用 graphql 和 apollo 来处理数据。
我用graphql创建了API服务器,用React在官方文档中创建了web服务器
它说我可以获取这样的数据
function Dogs({ onDogSelected }) {
const { loading, error, data } = useQuery(GET_DOGS);
if (loading) return 'Loading...';
if (error) return `Error! ${error.message}`;
return (
<select name="dog" onChange={onDogSelected}>
{data.dogs.map(dog => (
<option key={dog.id} value={dog.breed}>
{dog.breed}
</option>
))}
</select>
);
}
还没有问题。 但是,如果我在此Dogs
组件中添加一些 state ,例如
const [someList, setSomeList] = useState([]);
每当 someList 被更改以重新渲染 Dogs 组件时,useQuery 也会再次运行。 这绝对不是我想要的。 我想控制获取数据的时间。 我该如何处理?
将查询Dogs
渲染组件之外:
function Dogs({ onDogSelected, data }) {
return (
<select name="dog" onChange={onDogSelected}>
{data.dogs.map(dog => (
<option key={dog.id} value={dog.breed}>
{dog.breed}
</option>
))}
</select>
);
}
function DoStuffHere() {
const [someList, setSomeList] = useState([]);
const { loading, error, data } = useQuery(GET_DOGS);
if (loading) return 'Loading...';
if (error) return `Error! ${error.message}`;
if (someList.length){
console.log("do someList stuff");
}
return (<Dogs data={data} onDogSelected={(x) => {
// setSomeList? here?
}} />)
}
将查询移到Dogs
之外,组件将确保Dogs
组件在重新呈现时不会重新获取。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.