- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 useLazyQuery
单击按钮时触发查询。查询被调用一次后,结果(数据、错误等)会在每次渲染时传递给组件渲染。例如,当用户输入新的文本输入来更改导致错误的原因时,这是有问题的:错误消息不断重复出现。因此,我想“清除”查询(例如,当用户在 TextInput 中键入新数据时),以便查询结果返回到初始状态(所有内容 undefined
)并且错误消息消失。
我在 Apollo 文档中找不到任何明确的方法来做到这一点,那我该怎么做呢?
(我虽然将查询放在父组件中,因此它不会在每次重新渲染时更新,但我宁愿不这样做)
这是我当前设置组件的方式:
import { useLazyQuery } from 'react-apollo'
// ...
const [inputValue, setInputValue] = useState('')
const [getUserIdFromToken, { called, loading, data, error }] = useLazyQuery(deliveryTokenQuery, {
variables: {
id: inputValue.toUpperCase(),
},
})
useEffect(() => {
if (data && data.deliveryToken) {
onSuccess({
userId: data.deliveryToken.vytal_user_id,
token: inputValue,
})
}
}, [data, inputValue, onSuccess])
// this is called on button tap
const submitToken = async () => {
Keyboard.dismiss()
getUserIdFromToken()
}
// later in the render...
<TextInput
onChangeText={(val) => {
setInputValue(val)
if (called) {
// clean/reset query here? <----------------------
}
})
/>
最佳答案
感谢@xadm 指出解决方案:我不得不给 onCompleted
和 onError
在 useLazyQuery 选项中回调,并将变量传递给调用函数,而不是在 useLazyQuery 选项中。最后,工作代码如下所示:
const [inputValue, setInputValue] = useState('')
const [codeError, setCodeError] = useState<string | undefined>()
const [getUserIdFromToken, { loading }] = useLazyQuery(deliveryTokenQuery, {
onCompleted: ({ deliveryToken }) => {
onSuccess({
userId: deliveryToken.vytal_user_id,
token: inputValue,
})
},
onError: (e) => {
if (e.graphQLErrors && e.graphQLErrors[0] === 'DELIVERY_TOKEN_NOT_FOUND') {
return setCodeError('DELIVERY_TOKEN_NOT_FOUND')
}
return setCodeError('UNKNOWN')
},
})
const submitToken = () => {
Keyboard.dismiss()
getUserIdFromToken({
variables: {
id: inputValue
},
})
}
关于react-native - 调用一次后重置 useLazyQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64491441/
要求: 我想在 useEffect 中第一次自动调用查询,然后在函数中手动调用。 Issue: Invarient Violation: Too many re-renders. const [ge
我正在使用 useLazyQuery单击按钮时触发查询。查询被调用一次后,结果(数据、错误等)会在每次渲染时传递给组件渲染。例如,当用户输入新的文本输入来更改导致错误的原因时,这是有问题的:错误消息不
我需要在按下提交按钮时调用查询,然后处理响应。 我需要这样的东西: const [checkEmail] = useLazyQuery(CHECK_EMAIL) const handleSubmit
使用来自 @apollo/react-hooks 的 useLazyQuery() Hook ,我能够通过单击按钮来执行查询。但我无法使用它在连续点击时执行相同的查询。 export default
在下面的代码中,永远不会触发 checkme() import { useMutation, useLazyQuery } from '@apollo/react-hooks'; import { L
我有一个 Feed 列表组件,我在它的上方有一个搜索输入组件。这两个组件都使用 useLazyQuery Hook 。const [getFeedPosts, { data, loading, err
目前我有一个 useLazyQuery按下按钮时触发的钩子(Hook)(搜索表单的一部分)。 钩子(Hook)行为正常,只有在按下按钮时才会触发。但是,一旦我触发它一次,它就会在每次组件重新呈现时触发
我正在使用 @apollo/client 在我的应用程序中构建忘记的功能useLazyQuery Hook 。当我第一次单击按钮时,它会发送电子邮件并调用后端 API,但第二次单击等等.. 它只会返回
我的数据库存储项目列表。我编写了一个查询,每次单击按钮时从列表中随机返回一个项目。我使用 useLazyQuery 并调用返回的函数来执行查询,它工作正常。我可以在随后的按钮按下时调用 refetch
我正在构建一个 discord/slack 克隆。我有 channel 、消息和用户。一旦加载了我的聊天组件,就会使用来自 Apollo 的 useQuery Hook 获取 channel 。 默认
我正在构建一个 discord/slack 克隆。我有 channel 、消息和用户。一旦加载了我的聊天组件,就会使用来自 Apollo 的 useQuery Hook 获取 channel 。 默认
我正在浏览 Apollo React hooks 的文档。 并且看到有两个查询钩子(Hook)可用于 useQuery和 useLazyQuery我正在阅读这一页。 https://www.apoll
我有一个用于 apollo 惰性查询的自定义去抖钩子(Hook): import {useLazyQuery} from '@apollo/react-hooks'; import debounce
我有一个用 tsx 编写的页面,在加载时不断崩溃,并出现错误 client.watchQuery cannot be called with fetchPolicy set to "standby"
我是一名优秀的程序员,十分优秀!