当前位置: 首页 > 知识库问答 >
问题:

使用突变不改变本地状态

景书
2023-03-14

我得到这个错误,而试图改变阿波罗本地状态。

错误不变冲突:应为已解析的GraphQL文档。也许您需要将查询字符串包装在“gql”标记中?http://docs.apollostack.com/apollo-client/core.html#gql

初始状态

registration: {
    __typename: 'Registration',
    tempMerchantId: '',
    authorizeProfile: {
      __typename: 'AuthorizePersonProfile',
      nid_front: '',
      nid_back: '',
      authorized_person_photo: ''
    }
  }

我的突变

export const setAuthorizePersonQuery = gql`
    mutation setAuthorizePersonProfileInfo($authorizePerosnData: Object!){
        setAuthorizePersonProfileInfo(authorizePersonData: $authorizePerosnData) @client
    }
`;

我的解析器

export const setAuthorizePersonProfileInfo = (
  _, { authorizePersonData }, { cache }
) => {
  try {
    const prevData = cache.readQuery({ getAuthorizePersonProfileQuery });
    cache.writeQuery({
      getAuthorizePersonProfileQuery,
      data: {
        registration: {
          __typename: 'Registration',
          authorizeProfile: {
            __typename: 'AuthorizePersonProfile',
            ...prevData.registration.authorizeProfile,
            ...authorizePersonData
          }
        }
      }
    });
  } catch (e) {
    console.log(`err${e}`);
  }
  return null;
};

我想改变按键的局部状态,功能是

const handlePressedNext = () => {
    Promise.all([
      setAuthorizePersonProfileInfo({
        variables: { authorizePersonData: generateNidData() }
      })
    ])
      .then(() => {
        navigation.navigate('Photograph');
      });
  };

生成数据功能如下

const generateNidData = () => ({
    nid_front: nidFrontImage,
    nid_back: nidBackImage
  });

我是阿波罗客户的新手。我不明白我做错了什么。有人能帮我解决这个问题吗?

共有1个答案

梅逸清
2023-03-14

getAuthorizePersonProfileQuery不是readQuery的有效选项。大概您的意思是使用查询。

 类似资料:
  • 我正在尝试向使用Apollo的GraphQL服务器发送突变查询。 然而,我只看到实现这一点的唯一方法是使用突变组件。https://www.apollographql.com/docs/react/essentials/mutations/#the-突变成分 有没有一种简单的方法可以发送这样的突变? 从“graphql标记”导入gql;

  • 关于封套 封套是对选定对象进行扭曲和改变形状的对象。您可以利用画板上的对象来制作封套,或使用预设的变形形状或网络作为封套。除图表、参考线或链接对象以外,您可以在任何对象上使用封套。 网格封套 从其他对象创建封套 “图层 ”面板以 <封套 > 形式列出了封套。在应用了封套之后,您仍可继续编辑原始对象。您还可以随时编辑、删除或扩展封套。您可以编辑封套形状或被封套的对象,但不可以同时编辑这两项。 使用封

  • 我想通过以下方式更改JButton的颜色: 为了进行更改,我必须补充: 但是,这会删除边缘周围的曲线,从而更改按钮的形状。有没有一种方法可以简单地改变颜色并保留其他属性?另一个例子是当你按下一个按钮而没有改变它的颜色时,颜色的改变(变暗)。 下面是一些代码,说明了这两个按钮之间的区别: 谢谢

  • 我正在尝试理解下面的QuickSort实现在Java中是如何工作的。我已经了解了大部分,但我很困惑它是如何做任何事情的。当您将变量传递给函数并对其进行修改时,它通常不会修改传入的原始变量。那么为什么这种没有返回类型的快速排序实现会修改传入的数组呢?

  • 我的变异查询: 查询变量: GraphQL模式(突变定义): 我尝试同时使用GraphiQL接口和apollo-client来发送带有变量的请求,但出现了相同的错误。有什么想法吗?

  • 使用效果是一个方便的对象改变形状方法,而且它还不会永久改变对象的基本几何形状。效果是实时的,这就意味着您可以随时修改或删除效果。 您可以使用下列效果来改变对象形状: 转换为形状将矢量对象的形状转换为矩形、圆角矩形或椭圆。使用绝对尺寸或相对尺寸设置形状的尺寸。对于圆角矩形,请指定一个圆角半径以确定圆角边缘的曲率。扭曲和变换使您可以快速改变矢量对象形状。自由扭曲使您可以通过拖动四个角落任意控制点的方式