apollo-link-state cache.writedata results in Missing field warning

守給你的承諾、 提交于 2019-12-10 04:06:46

问题


When I call a mutation on my client I get the following warning:

writeToStore.js:111 Missing field updateLocale in {}

This is my 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',
    },
  },
});

And this is my component:

export default graphql(gql`
  mutation updateLocale($locale: String) {
    updateLocale(locale: $locale) @client
  }
`, {
    props: ({ mutate }) => ({
      updateLocale: locale => mutate({
        variables: { locale },
      }),
    }),
  })(LanguagePicker);

What am I missing?


回答1:


I was getting the same warning and solved it by returning the data from the mutation method.

updateLocale: (root, { locale }, context) => {

  const data = {
    language: {
      __typename: 'Language',
      locale,
    }
  };
  context.cache.writeData({ data });
  return data;
};



回答2:


At the moment, apollo-link-state requires you to return any result. It can be null too. This might be changed in the future.



来源:https://stackoverflow.com/questions/48005732/apollo-link-state-cache-writedata-results-in-missing-field-warning

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!