javascript - 如何从 Apollo graphql 客户端状态检索值

标签 javascript reactjs graphql apollo react-apollo

查看Apollo link state我可以了解如何通过使用突变或直接使用 cache.writeData({ data }) 将值写入/更新到本地存储/缓存。

但是我如何直接检索缓存的值以用作突变的变量?或者我是否需要在第一个查询上使用 @client 进行第二个查询?

注意:如果我使用 ApolloProvider,我可以访问缓存,但它看起来像这样:{cache.cache.data.$ROOT.data.myVariable}

最佳答案

您可以将 Mutation 组件嵌套在 Query 组件中。就像下面这样。如果您经常这样做,那么您可以创建自己的包装器组件。

或者您可以执行client.readQuery,如此处文档中所示:https://www.apollographql.com/docs/react/advanced/caching.html#readquery .

const ADD_TODO = gql`
  mutation addTodo($type: String!) {
    addTodo(type: $type) {
      id
      type
    }
  }
`;

<Query query={gql`
  {
    myVariable @client
  }
`>
 {({ data: { myVariable }}) => {

  return (
    <Mutation mutation={ADD_TODO}>
      {(addTodo, { data }) => (
        <div>
          <form
            onSubmit={e => {
              e.preventDefault();
              addTodo({ variables: { type: myVariable } });
              input.value = "";
            }}
          >
            <input
              ref={node => {
                input = node;
              }}
            />
            <button type="submit">Add Todo</button>
          </form>
        </div>
      )}
    </Mutation>
</Query>

关于javascript - 如何从 Apollo graphql 客户端状态检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50321808/

相关文章:

javascript - 从 mysql 和 php 检索 json 数据到 jquery

javascript - 如何在不使用控制台的情况下打开我的 React Web 应用程序?

reactjs - 设置导入的样式组件的样式

reactjs - 使用 apollo 和 graphql 上传大于 16 kb 的文件时会损坏

graphql - 对未知级别 GraphQL 的嵌套查询

javascript - 在angularjs中调用 Controller 时如何加载函数

javascript - Jquery addClass 如果图像高度大于宽度

javascript - IE 11 中的 getUserMedia 或 IE 11 中的 MediaStream

用于突变的 GraphQL 查看器

javascript - 如何在网站中使用用户脚本?(Greasemonkey 是如何工作的)