Apollo GraphQL 查询返回后如何更新 Redux 存储

reactjs

1个回答

写回答

好好爱缘

2025-06-13 00:10

+ 关注

Java
Java

如何根据 Apollo GraphQL 查询返回后更新 Redux 存储

Redux 是一个用于 JavaScript 应用程序的状态管理工具,而 Apollo GraphQL 是一个用于构建数据图的工具。将 Apollo GraphQL 与 Redux 结合使用可以更好地管理应用程序的状态。当 Apollo GraphQL 查询返回后,我们可以通过更新 Redux 存储来保持应用程序的状态同步。本文将介绍如何使用 Apollo GraphQL 查询结果更新 Redux 存储,并提供一个案例代码来演示实现过程。

1. 创建 Redux 存储

首先,我们需要创建一个 Redux 存储来存储应用程序的状态。可以使用 Redux 的 createStore 函数来创建一个 Redux 存储,如下所示:

Javascript

import { createStore } from 'redux';

const initialState = {

data: null,

};

function reducer(state = initialState, action) {

switch (action.type) {

case 'SET_DATA':

return {

...state,

data: action.payload,

};

default:

return state;

}

}

const store = createStore(reducer);

在上面的代码中,我们创建了一个名为 data 的初始状态,并定义了一个 reducer 函数来处理不同的操作类型。在这个例子中,我们只定义了一个操作类型 SET_DATA,用于设置 data 的值。

2. 创建 Apollo GraphQL 客户端

接下来,我们需要创建一个 Apollo GraphQL 客户端来发送查询并处理返回的数据。可以使用 ApolloClient 类来创建一个 Apollo GraphQL 客户端,如下所示:

Javascript

import { ApolloClient, InMemoryCache } from '@apollo/client';

const client = new ApolloClient({

uri: 'https://api.example.com/graphql',

cache: new InMemoryCache(),

});

在上面的代码中,我们创建了一个 ApolloClient 实例,并指定了 GraphQL 服务器的 URL。我们还使用了 InMemoryCache 来缓存返回的数据。

3. 发送查询并更新 Redux 存储

现在,我们可以发送 Apollo GraphQL 查询并在返回后更新 Redux 存储。可以使用 Apollo GraphQL 客户端query 方法来发送查询,如下所示:

Javascript

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

const query = gql<code>

query GetData {

data {

id

name

}

}

</code>;

client.query({ query })

.then(response => {

const data = response.data.data;

store.dispatch({ type: 'SET_DATA', payload: data });

})

.catch(error => {

console.error(error);

});

在上面的代码中,我们定义了一个名为 GetData 的查询,并使用 client.query 方法发送查询。一旦查询返回,我们从响应中提取出数据,并使用 store.dispatch 方法将数据更新到 Redux 存储中。

4. 监听 Redux 存储的变化

最后,我们可以监听 Redux 存储的变化,并在发生变化时更新应用程序的界面。可以使用 Redux 的 store.subscribe 方法来监听 Redux 存储的变化,如下所示:

Javascript

store.subscribe(() => {

const state = store.getState();

// 更新应用程序界面

});

在上面的代码中,我们使用 store.subscribe 方法来监听 Redux 存储的变化,并在回调函数中获取最新的存储状态。我们可以根据最新的状态来更新应用程序的界面。

通过将 Apollo GraphQL 与 Redux 结合使用,我们可以更好地管理应用程序的状态。当 Apollo GraphQL 查询返回后,我们可以使用 Redux 的 store.dispatch 方法将查询结果更新到 Redux 存储中,并通过监听 Redux 存储的变化来更新应用程序的界面。这种结合使用的方式可以使应用程序的状态更加一致和可预测。

希望本文对你了解如何根据 Apollo GraphQL 查询返回后更新 Redux 存储有所帮助。通过使用这种结合使用的方式,你可以更好地管理应用程序的状态,并提供更好的用户体验。

参考代码链接:https://gist.github.com/example/abcdef1234567890

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号