如何使用 apollo 查询的结果调度操作?
How to dispatch action with result of apollo query?
在根组件中,我有 Apollo Query,它从服务器检索数据,然后我想立即将此数据分派到 redux 存储,然后在 child 的组件中首次渲染时使用它。
所以方案是这样的:
<ApolloProvider>
<ReduxProvider>
<SomeChildComponent /> --- Can be a lot of nested components
</ReduxProvider>
</ApolloProvider>
现在我正在使用 React.Context
将数据从 Query
传递到所有 child 组件,并通过 redux 对本地状态执行其他操作。但我需要将该查询结果放在 redux 存储中。
那么我应该把这个数据的调度方法放在哪里呢?
我不能使用 componentDidMount
因为我需要在 children 第一次渲染之前处理这些数据。以及为什么我需要 componentDidMount
来获取已经获取并可以使用的数据。
我看到在 render 方法中分派它的唯一方法,但我知道那根本就是反模式,并且找不到关于我的案例的信息,因为每个问题都是关于通过 redux 获取数据的,但我已经知道了,所以如何处理这个?
您可以将一个函数传递给查询组件的onCompleted 属性,它接收结果数据作为第一个参数。您可以从那里发送您的操作。
在根组件中,我有 Apollo Query,它从服务器检索数据,然后我想立即将此数据分派到 redux 存储,然后在 child 的组件中首次渲染时使用它。 所以方案是这样的:
<ApolloProvider>
<ReduxProvider>
<SomeChildComponent /> --- Can be a lot of nested components
</ReduxProvider>
</ApolloProvider>
现在我正在使用 React.Context
将数据从 Query
传递到所有 child 组件,并通过 redux 对本地状态执行其他操作。但我需要将该查询结果放在 redux 存储中。
那么我应该把这个数据的调度方法放在哪里呢?
我不能使用 componentDidMount
因为我需要在 children 第一次渲染之前处理这些数据。以及为什么我需要 componentDidMount
来获取已经获取并可以使用的数据。
我看到在 render 方法中分派它的唯一方法,但我知道那根本就是反模式,并且找不到关于我的案例的信息,因为每个问题都是关于通过 redux 获取数据的,但我已经知道了,所以如何处理这个?
您可以将一个函数传递给查询组件的onCompleted 属性,它接收结果数据作为第一个参数。您可以从那里发送您的操作。