【问题标题】:Apollo useQuery or client.query React failing to log valuesApollo useQuery 或 client.query React 无法记录值
【发布时间】:2020-04-28 17:05:20
【问题描述】:

我正在尝试使用 useQuery 钩子从 graphql 响应中循环对象数组。

 const { loading, error, data } = useQuery(GET_FOLDERS);

如果我控制台日志数据然后我得到这个

但是如果我要控制台日志 data.Folders[0].id 我得到 TypeError: data is undefined 我已经尝试手动创建一个具有相同值的数组的对象,我可以很好地控制台它,如果我改变使用useQuery to client.query({query: GET_FOLDERS}) with apolloBoost 然后它也可以正常工作我只是认为有人可以指出我正确的方向,除非它必不可少,我需要显示我的所有代码。谢谢

【问题讨论】:

    标签: reactjs graphql react-apollo


    【解决方案1】:

    useQuery 异步返回结果的事实意味着数据在初始渲染中不可用,因此当您尝试访问特定的嵌套属性时会引发错误

    解决方案是依赖这里的加载状态,只有在它真正准备好后才访问该属性

    const Comp = () = {
        const { loading, error, data } = useQuery(GET_FOLDERS);
        if(loading) {
            return <div>Loading...</div>
        }
        console.log(data.Folders[0].id )
        ...
    }
    

    【讨论】:

    • 感谢一家工厂,我知道这显然会浪费时间,认为我在使用基本 JS 访问对象中的数组时做错了什么,您对是否更好地使用 client.query 有任何建议吗?您认为 useQuery。
    • 如果你使用函数式组件,useQuery 是一个不错的选择。
    • 感谢您在学习阶段的帮助,所以不要总是发现明显的东西
    猜你喜欢
    • 2020-10-30
    • 2021-05-27
    • 2021-08-26
    • 2019-10-06
    • 2020-11-08
    • 2020-09-02
    • 2020-04-13
    • 2020-10-30
    • 2020-05-11
    相关资源
    最近更新 更多