クライアントでミューテーションを呼び出すと、次の警告が表示されます。
writeToStore.js:111 {}にフィールドupdateLocaleがありません
これは私のstateLinkです:
const stateLink = withClientState({
cache,
resolvers: {
Mutation: {
updateLocale: (root, { locale }, context) => {
context.cache.writeData({
data: {
language: {
__typename: 'Language',
locale,
},
},
});
},
},
},
defaults: {
language: {
__typename: 'Language',
locale: 'nl',
},
},
});
そしてこれは私のコンポーネントです:
export default graphql(gql`
mutation updateLocale($locale: String) {
updateLocale(locale: $locale) @client
}
`, {
props: ({ mutate }) => ({
updateLocale: locale => mutate({
variables: { locale },
}),
}),
})(LanguagePicker);
何が足りないのですか?
同じ警告が表示され、ミューテーションメソッドからデータを返すことで解決しました。
updateLocale: (root, { locale }, context) => {
const data = {
language: {
__typename: 'Language',
locale,
}
};
context.cache.writeData({ data });
return data;
};
現時点では、apollo-link-stateではanyの結果を返す必要があります。 null
にすることもできます。 これは将来変更される可能性があります 。