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 不改变本地状态的主要内容,如果未能解决你的问题,请参考以下文章