useMutation 不改变本地状态

Posted

技术标签:

【中文标题】useMutation 不改变本地状态【英文标题】:useMutation not mutating the local state 【发布时间】:2020-05-03 02:53:40 【问题描述】:

我在尝试改变 apollo 中的本地状态时遇到此错误。

errInvariant Violation:期望解析的 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');
      );
  ;

generateNidData 函数如下所示

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

我是 apollo 客户端的新手。我不明白我做错了什么。谁能帮我解决问题?

【问题讨论】:

【参考方案1】:

getAuthorizePersonProfileQuery 不是readQuery 的有效选项。据推测,您的意思是改用query

【讨论】:

以上是关于useMutation 不改变本地状态的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React/Redux 中本地管理组件的状态

Json的本地写入和读取,也可以方便在开发中数据的调试

(尚030)Vue_案例_存储数据(localStorage本地存储技术)

iOS开发--本地通知与远程通知

当应用程序的状态不活动时是不是可以获得本地通知

Git的本地操作--下(不会使github远程仓库发生任何改变)