Javascript 使用graphql和apollo客户端获取数据时以状态存储数据

Javascript 使用graphql和apollo客户端获取数据时以状态存储数据,javascript,reactjs,graphql,apollo,Javascript,Reactjs,Graphql,Apollo,我一直在使用react和redux,每次我调用ComponentDidMount中的某个RESTAPI时,我都可以用它设置一个状态并将该状态传递给我的孩子,或者更改该状态并使用它。 我也可以将这些数据保存在我的redux中,做我想做的一切。 我最近开始使用graphql,我看到当使用查询在render中获取数据时,我们会呈现我们想要的数据,以此类推。 但我关心的是如何将它存储在某种状态下,玩它,然后传递给孩子,而不是渲染它。 我在《阿波罗》中经历了这个连接状态,但对它的基本功能没有一个清晰的理解

我一直在使用react和redux,每次我调用ComponentDidMount中的某个RESTAPI时,我都可以用它设置一个状态并将该状态传递给我的孩子,或者更改该状态并使用它。 我也可以将这些数据保存在我的redux中,做我想做的一切。 我最近开始使用graphql,我看到当使用查询在render中获取数据时,我们会呈现我们想要的数据,以此类推。 但我关心的是如何将它存储在某种状态下,玩它,然后传递给孩子,而不是渲染它。 我在《阿波罗》中经历了这个连接状态,但对它的基本功能没有一个清晰的理解? 如何解决状态管理的问题,并利用来自阿波罗的数据设置的状态。 我真的错过了这个功能

this.setState({
  data:(some api data )
)}
假设我做了一个查询,我希望我的三个子组件共享相同的数据。您将如何使用graphql实现这一点

第一种方法 从api读取的数据可以通过缓存访问-默认策略为缓存优先。每个子级都可以使用graphql(HOC或组件)从缓存访问数据。它们中的每一个都可以使用不同的查询来获取组件真正需要的数据。如果所有查询字段都是父查询的子集,则可以使用“仅缓存”策略

第二种方法 您可以使用
getDerivedStateFromProps()
操作api数据。您可以将这些值作为道具直接传递给孩子(不使用graphql缓存访问)

第三种方法
React classic(向下传递道具):只需将
数据
道具(未修改)传递给子渲染
(HOC中的父级)或
(组件中的渲染道具)

不清楚您在这里试图实现什么,您可以在调用setState()之前始终操纵API数据@Christophengo假设我做了一个查询,我希望我的三个子组件共享相同的数据。你将如何使用graphql实现这一点?@你能解释一下第二种方法吗?