如何限制useQuery的api调用只能被调用一次?

图欣

我正在跟踪具有date变量的组件在每次重新渲染时,date变量都会更新。现在的问题是,因为我已将日期分配给查询变量,graphql一次又一次地无限次获取。我调试了代码,发现apollo是Observing on datevariable,当它接收到一个新值时,它将重新显示。

import React from 'react';
import { getISODate } from '../../dateUtils';
import { useQuery } from '@apollo/react-hooks';
import { GET_EXPENSE_STATUS } from '../../queries';
import get from 'lodash/get';

const ExpenseStatus = (props) => {
  const date = getISODate(); // returns current date as ISO String Format
  const { loading, error, data } = useQuery(GET_EXPENSE_STATUS, {
    variables: {
      date
    }
  });
  if (error) return <p>Error :(</p>;
  return(
    <div>
       {get(data, 'expenseStatus.value')}
    </div>
  );
};

我也尝试过useLazyQuery但是没有运气。

 const date = getISODate(); // returns current date in ISO String

 const [loadExpenseStatus, { loading, error, data }] = useLazyQuery(GET_EXPENSE_STATUS, {
     variables: {
       date
     }
 });

 useEffect(() => {
   if(!called) {
     loadExpenseStatus();
   }
 }, []);

因此,有什么办法可以跳过此观察者吗?我只想收到一次提取呼叫。

Xadm

可能有两种解决方案,第一种(初始值“冻结”):

const [staticDate] = useState( getISODate() );
const { loading, error, data } = useQuery(GET_EXPENSE_STATUS, {
  variables: {
    date: staticDate
  }
});

或简单const [date] = useState( getISODate() );variables: { date }... ...否date,其他位置需要当前值。

第二个(当输出/渲染中不需要“日期”值时):

const [loadExpenseStatus, { loading, error, data }] = useLazyQuery(GET_EXPENSE_STATUS);

useEffect(() => {
  loadExpenseStatus( {
    variables: {
      date: getISODate()
    }
  } );
}, []); // called once

docs:https : //www.apollographql.com/docs/react/data/queries/#executing-queries-manually

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Twitter Digits-Digits.init()只能调用一次

来自分类Dev

file.each_line只能被调用一次

来自分类Dev

为什么我只能调用一次GetResponseStream()

来自分类Dev

我只能调用一次定义:Python 3

来自分类Dev

如何使UIrotategesture仅调用一次?

来自分类Dev

限制一次调用静态setter方法

来自分类Dev

如何将方法“ utilities.DecryptStringFromBase64String”的调用限制为一次

来自分类Dev

如何做到这一点,以便我可以在 javascript 中一次执行 10 个承诺,以防止对 api 调用进行速率限制?

来自分类Dev

AJAX调用只能与$(document).on('click')一起使用一次

来自分类Dev

如何限制Akka Stream每秒只能执行和发送一条消息一次?

来自分类Dev

将Google Maps API标记限制为每个标记只能单击一次

来自分类Dev

通过addEventListener调用一个函数,但是该函数只能工作一次,无法再次调用

来自分类Dev

只能调用一次的大型函数可以内联吗?

来自分类Dev

Angular 1.5.0-为什么工厂只能调用一次?

来自分类Dev

在react-testing-library中是否只能调用一次?

来自分类Dev

JS新手:为什么在for循环内此函数只能调用一次?

来自分类Dev

Spring @initBinder方法在控制器内部只能被调用一次

来自分类Dev

我只能在Application中调用一次Realm.getInstance()吗?

来自分类Dev

为什么pygame.event.get()每帧只能调用一次

来自分类Dev

只能在 R 中进行一次优化调用吗?

来自分类Dev

System.InvalidOperationException:BluetoothLowEnergyAdapter.Init 只能调用一次

来自分类Dev

调用CF API登录一次密码时出错

来自分类Dev

只需一次调用api资源的类

来自分类Dev

如何通过Wikipedia API在一次地理搜索调用中获取更多信息?

来自分类Dev

如何通过一次调用OSM API的方式获得(纬度,经度)对的列表?

来自分类Dev

NodeJ:如何每15分钟重复调用一次API

来自分类Dev

如何在多个组件中进行一次api调用

来自分类Dev

如何使用ESP8266每1秒进行一次API调用?

来自分类Dev

ReactJS:如何仅调用一次useEffect挂钩来获取API数据

Related 相关文章

  1. 1

    Twitter Digits-Digits.init()只能调用一次

  2. 2

    file.each_line只能被调用一次

  3. 3

    为什么我只能调用一次GetResponseStream()

  4. 4

    我只能调用一次定义:Python 3

  5. 5

    如何使UIrotategesture仅调用一次?

  6. 6

    限制一次调用静态setter方法

  7. 7

    如何将方法“ utilities.DecryptStringFromBase64String”的调用限制为一次

  8. 8

    如何做到这一点,以便我可以在 javascript 中一次执行 10 个承诺,以防止对 api 调用进行速率限制?

  9. 9

    AJAX调用只能与$(document).on('click')一起使用一次

  10. 10

    如何限制Akka Stream每秒只能执行和发送一条消息一次?

  11. 11

    将Google Maps API标记限制为每个标记只能单击一次

  12. 12

    通过addEventListener调用一个函数,但是该函数只能工作一次,无法再次调用

  13. 13

    只能调用一次的大型函数可以内联吗?

  14. 14

    Angular 1.5.0-为什么工厂只能调用一次?

  15. 15

    在react-testing-library中是否只能调用一次?

  16. 16

    JS新手:为什么在for循环内此函数只能调用一次?

  17. 17

    Spring @initBinder方法在控制器内部只能被调用一次

  18. 18

    我只能在Application中调用一次Realm.getInstance()吗?

  19. 19

    为什么pygame.event.get()每帧只能调用一次

  20. 20

    只能在 R 中进行一次优化调用吗?

  21. 21

    System.InvalidOperationException:BluetoothLowEnergyAdapter.Init 只能调用一次

  22. 22

    调用CF API登录一次密码时出错

  23. 23

    只需一次调用api资源的类

  24. 24

    如何通过Wikipedia API在一次地理搜索调用中获取更多信息?

  25. 25

    如何通过一次调用OSM API的方式获得(纬度,经度)对的列表?

  26. 26

    NodeJ:如何每15分钟重复调用一次API

  27. 27

    如何在多个组件中进行一次api调用

  28. 28

    如何使用ESP8266每1秒进行一次API调用?

  29. 29

    ReactJS:如何仅调用一次useEffect挂钩来获取API数据

热门标签

归档