Apollo-client (react) - 创建突变更新 - “在对象 (ROOT_QUERY) 上找不到字段 Fund({})”

reactjs

1个回答

写回答

小橘&Krystal

2025-07-06 23:30

+ 关注

客户端
客户端

在使用Apollo Client进行React开发时,我们经常需要处理数据的更新和变更。然而,有时候我们可能会遇到一些错误信息,例如“在对象 (ROOT_QUERY) 上找不到字段 Fund({})”。这个错误信息意味着我们在GraphQL查询中引用了一个不存在的字段,导致无法找到相应的数据。本文将为大家介绍如何创建突变更新,并提供一个案例代码来帮助理解。

在开始之前,让我们简要了解一下Apollo Client。Apollo Client是一个强大的GraphQL客户端,用于连接前端应用程序和GraphQL服务器。它提供了许多功能,包括查询和突变更新、缓存管理、错误处理和订阅等。通过使用Apollo Client,我们可以轻松地将GraphQL集成到我们的React应用中,并处理数据的获取、更新和变更。

在使用Apollo Client时,我们通常需要编写GraphQL查询来获取数据。例如,我们可能有一个查询来获取基金的信息:

graphql

query {

Fund {

id

name

description

}

}

在这个查询中,我们请求了基金的id、name和description字段。然而,当我们在React组件中使用这个查询时,可能会遇到上面提到的错误信息:“在对象 (ROOT_QUERY) 上找不到字段 Fund({})”。这意味着我们的GraphQL服务器上并没有一个名为Fund的字段。

那么,我们该如何解决这个问题呢?首先,我们需要确保我们的GraphQL服务器上确实有一个名为Fund的字段。我们可以通过检查GraphQL服务器的schema来确认这一点。如果确实没有Fund字段,我们需要相应地更新我们的查询。

接下来,我们需要在Apollo Client中创建一个突变更新来处理数据的变更。突变更新是一种用于发送修改请求的特殊GraphQL操作。通过使用突变更新,我们可以更新服务器上的数据,并且Apollo Client会相应地更新缓存和界面。

下面是一个使用Apollo Client进行突变更新的示例代码:

Javascript

import { useMutation } from '@apollo/client';

import { UPDATE_FUND } from './mutations';

const FundForm = () => {

const [updateFund] = useMutation(UPDATE_FUND);

const handleUpdateFund = () => {

const variables = {

id: 'fund-id',

name: 'New Fund Name',

description: 'New Fund Description'

};

updateFund({ variables }).then(() => {

// 更新成功后的处理逻辑

}).catch((error) => {

// 更新失败后的处理逻辑

});

};

return (

<button onClick={handleUpdateFund}>Update Fund</button>

);

};

export default FundForm;

在上面的代码中,我们使用了useMutation hook来创建一个名为updateFund的突变更新。我们还定义了一个handleUpdateFund函数,它会在按钮点击事件发生时被调用。在handleUpdateFund函数中,我们定义了要更新的基金的变量,并通过调用updateFund函数来发送突变更新请求。在更新成功或失败后,我们可以执行相应的处理逻辑。

通过使用Apollo Client进行突变更新,我们可以轻松地处理数据的变更,并及时更新应用程序的界面。同时,我们还可以通过检查GraphQL服务器的schema来解决一些常见的错误,例如“在对象 (ROOT_QUERY) 上找不到字段 Fund({})”。希望本文对于正在使用Apollo Client进行React开发的开发者们能够有所帮助。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号