reactjs - onClick 时 GraphQL useLazyQuery 无法正常工作
问题描述
我对 GraphQL 很陌生。我正在尝试将 useLazyQuery 钩子用于我的 onBtnClick 函数。该按钮应该在每次单击时查询并执行某些操作。
我第一次单击按钮时,数据返回是未定义的,只有第二次尝试才能正常工作。这是下面的一些示例代码:
const [getItemList, { loading, data}] = useLazyQuery(ItemList, { fetchPolicy: 'network-only' });
const onBtnClick = () => {
getItemList();
if (loading) {
//do something
});
if (data) {
//do another thing
}
}
return (
<div>
<button onClick={onBtnClick}>Something</button>
</div>
)
有人可以指导我或解释一下吗?
解决方案
因为onBtnClick
函数中的数据不是最新数据。你需要useEffect
倾听data
和loading
改变。
useEffect(() => {
console.log(data, loading)
}, [data, loading])
推荐阅读
- php - Apache 正在运行线程 MPM,但您的 PHP 模块未编译为线程安全的。您需要重新编译 PHP。AH00013:预配置失败
- android - 如何在 Android 上访问语音通话和 VoIP 通话的输入和输出音频流?
- php - mouseover 显示原始 html 数据并触发无限时间
- sql - 在我的情况下,如何使用 SQL Server 将行转换为列?
- javascript - 如何根据事件以不同颜色突出显示日历中的日期?
- swift - 如何编码/解码 [CKRecordZone.ID: CKServerChangeToken]?
- scala - 带有过滤器列的 Scala
- php - Laravel @extends 和 @include 有什么区别
- python - 如何在一个字符串中找到字母,数字然后在python中放入换行符
- python - 使用scrapy提取带有标题和带有选定链接的url的链接