Rog*_*ger 16 reactjs apollo-client
如何在React.UseEffect中使用UseQuery?这是我的简单查询
const {allrecord} = useQuery(ME, {
onCompleted: ({ meTeacher}) => {
setUser(meIAM);
getRecords({
variables: {
orgId: meIAM.organization.id,
pagingArg: {},
},
}).then(({ data }) => displayRecord(data.record));
},
});
useEffect(() => {
console.log(allLocations)
}, []);
Run Code Online (Sandbox Code Playgroud)
useQuery是一个钩子,因此不能在分支下使用。
这意味着您必须useQuery在组件内部调用,而不是在分支语句 (if/else/switch/useEffect) 下调用。
如果您需要对 a 的结果执行某些操作,useQuery只需使用 auseEffect并依赖于该结果
Apollo Client useQueryhook 在组件渲染时自动执行相应的查询。这使得它与在没有依赖项的情况下执行查询非常相似useEffect。喜欢:
useEffect(() => {
const data = executeQuery()
}, [])
Run Code Online (Sandbox Code Playgroud)
还有一个替代挂钩,useLazyQuery可用于执行查询以响应某些事件,例如按下按钮。
这里有很好的答案https://github.com/trojanowski/react-apollo-hooks/issues/158
const { loading, data, error } = useQuery(SOME_QUERY)
// If you absolutely need to cache the mutated data you can do the below. But
// most of the time you won't need to use useMemo at all.
const cachedMutatedData = useMemo(() => {
if (loading || error) return null
// mutate data here
return data
}, [loading, error, data])
if (loading) return <Loader />
if (error) return <Error />
// safe to assume data now exist and you can use data.
const mutatedData = (() => {
// if you want to mutate the data for some reason
return data
})()
return <YourComponent data={mutatedData} />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41947 次 |
| 最近记录: |