ApolloClient-useQuerydoesn'tre-renderwhendataarrives
创始人
2024-09-09 07:30:25
0
  1. 确定组件是否正确使用了useQuery Hooks 例:

import React from 'react'; import { useQuery, gql } from '@apollo/client';

const GET_POSTS = gql query GetPosts { posts { id title body } };

function PostList() { const { loading, error, data } = useQuery(GET_POSTS);

if (loading) return

Loading...

; if (error) return

Error :(

;

return (

{data.posts.map(post => (

{post.title}

{post.body}

))}
); }

  1. 确定查询是否正确调用并且查询结果会触发组件重新渲染(例如:父组件中的props、状态变化) 例:

import React, { useState } from 'react'; import { useQuery, gql } from '@apollo/client';

const GET_USER = gql query GetUser($email: String!) { user(email: $email) { id name email } };

function UserDetail({ email }) { const [status, setStatus] = useState(''); const { loading, error, data } = useQuery(GET_USER, { variables: { email }, onCompleted: () => setStatus('completed'), onError: () => setStatus('error'), });

if (status === 'completed') { return (

{data.user.name}

{data.user.email}

); } if (status === 'error') { return

Invalid email.

; } return loading ?

Loading...

: null; }

  1. 如果前两遍检查都没有解决问题,可以尝试适当增加useQuery中的fetchPolicy参数,例如"cache-and-network"会尽可能从缓存中获取数据,但是如果缓存无效或不可用则会从网络中获取最新的数据。 例:

const { loading, error, data } = useQuery(GET_USER, { variables: { email }, fetchPolicy: 'cache-and-network', });

相关内容

热门资讯

oppo手机安卓系统换成苹果系... OPPO手机安卓系统换成苹果系统:现实吗?如何操作?随着智能手机市场的不断发展,用户对于手机系统的需...
安卓系统怎么连不上carlif... 安卓系统无法连接CarLife的原因及解决方法随着智能手机的普及,CarLife这一车载互联功能为驾...
iwatch怎么连接安卓系统,... 你有没有想过,那款时尚又实用的iWatch,竟然只能和iPhone好上好?别急,今天就来给你揭秘,怎...
安卓系统上滑按键,便捷生活与高... 你有没有发现,现在手机屏幕越来越大,操作起来却越来越方便了呢?这都得归功于安卓系统上的那些神奇的上滑...
安卓平板改windows 系统... 你有没有想过,你的安卓平板电脑是不是也能变身成Windows系统的超级英雄呢?想象在同一个设备上,你...
iphone系统与安卓系统更新... 最近是不是你也遇到了这样的烦恼?手机更新系统总是失败,急得你团团转。别急,今天就来给你揭秘为什么iP...
安卓系统连接耳机模式,蓝牙、有... 亲爱的手机控们,你们有没有遇到过这种情况:手机突然变成了“耳机模式”,明明耳机没插,声音却只从耳机孔...
希沃系统怎么装安卓系统,解锁更... 亲爱的读者们,你是否也像我一样,对希沃一体机上的安卓系统充满了好奇呢?想象在教室里,你的希沃一体机不...
安装了Anaconda之后找不... 在安装Anaconda后,如果找不到Jupyter Notebook,可以尝试以下解决方法:检查环境...
安卓平板改双系统,轻松实现一机... 你有没有想过,你的安卓平板可以变成一个双系统的小怪兽呢?没错,就是那种既能流畅运行安卓应用,又能优雅...