反应:Apollo 客户端:无法在现有状态转换期间更新

三角洲

我正在尝试制作一个包装 Apollo Client 的 Query 组件的组件。我正在使用apollo-link-state本地状态管理,我想要一个错误通知系统来通知用户所有事情。

我的组件看起来像这样......

export class Viewer extends React.Component {
  static propTypes = {
    children: PropTypes.func
  };

  render() {
    const { children } = this.props;
    return (
      <Query query={GET_VIEWER}>
        {({ data, client, error }) => {
          if (error) {
            client.mutate({
              mutation: ADD_NOTIFICATION,
              variables: { message: unpackApolloErr(error), type: 'Error' }
            });
          }

          return children(data.viewer ? data.viewer : user);
        }}
      </Query>
    );
  }
}

但是当它尝试添加带有突变的错误时,我收到了反应错误..

Warning: forceUpdate(...): Cannot update during an existing state transition (such as within `render` or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved to `componentWillMount`.

我没有看到解决这个问题的明显方法,我不明白为什么如果客户端作为渲染道具提供并且无法使用......我一定错过了一些简单的东西,但我看不到它是什么

三角洲

答案原来是客户端在onError函数中可用,就像this使用apollo-link-error https://www.apollographql.com/docs/link/links/error.html 一样

我之前曾尝试使用onError来访问客户端,但是即使在onError处理程序之后声明了客户端,它被调用的范围也确实包含客户端并不明显

// client is available here even though it is defined first 
const err = onError({ graphQLErrors }) => {
    this.client.mutate({ mutation: ADD_ERROR, variables: { graphQLErrors }})
}

const client = new ApolloClient({
    cache,
    link: ApolloLink.from([err, httpLink])
})

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

反应错误:“无法在现有状态转换期间更新”

来自分类Dev

具有 setInterval 的增量反应游戏:无法在现有状态转换期间更新

来自分类Dev

反应警告:在现有状态转换期间(例如在`render`中)无法更新

来自分类Dev

setstate在状态转换期间无法更新-反应

来自分类Dev

在现有状态转换期间无法更新

来自分类Dev

ReactJS | 在现有状态转换期间无法更新

来自分类Dev

警告:setState(...):在现有状态转换期间无法更新

来自分类Dev

Apollo客户端:缓存更新后组件不呈现(反应变量)

来自分类Dev

突变后不影响现有查询的自动更新apollo客户端缓存

来自分类Dev

无法在现有状态转换期间更新 - 无论何时更改特定状态

来自分类Dev

如何将 HOC 转换为 apollo 的反应组件语法?

来自分类Dev

React Native / Redux-setState-在现有状态转换期间无法更新

来自分类Dev

在现有状态转换期间无法更新-不使用任何非法的setState()

来自分类Dev

收到警告:渲染内部现有状态转换期间无法更新

来自分类Dev

在现有状态转换期间无法更新-不使用任何非法的setState()

来自分类Dev

获取计数时无法在现有状态转换期间更新

来自分类Dev

setState(...):无法在现有状态转换期间更新(例如在 `render` 或其他组件的构造函数中)

来自分类Dev

警告:无法在现有状态转换期间更新(例如在 `render` 或其他组件的构造函数中)

来自分类Dev

由于在渲染方法中调用了 onClick 方法,因此出现“无法在现有状态转换期间更新”错误

来自分类Dev

如何用apollo客户端状态管理替换vuex?

来自分类Dev

如何从 Apollo graphql 客户端状态检索值

来自分类Dev

变异后React Apollo更新客户端缓存

来自分类Dev

Apollo 客户端缓存私有信息

来自分类Dev

React - setState errir - 在状态转换期间无法更新

来自分类Dev

Apollo客户端未解析UserInputError

来自分类Dev

Apollo客户端缓存与Redux

来自分类Dev

Apollo客户端延迟刷新

来自分类Dev

Apollo 客户端并提前输入

来自分类Dev

“无法在现有日期转换期间更新”在 react-native 中使用带有 redux 的 react-navigation

Related 相关文章

  1. 1

    反应错误:“无法在现有状态转换期间更新”

  2. 2

    具有 setInterval 的增量反应游戏:无法在现有状态转换期间更新

  3. 3

    反应警告:在现有状态转换期间(例如在`render`中)无法更新

  4. 4

    setstate在状态转换期间无法更新-反应

  5. 5

    在现有状态转换期间无法更新

  6. 6

    ReactJS | 在现有状态转换期间无法更新

  7. 7

    警告:setState(...):在现有状态转换期间无法更新

  8. 8

    Apollo客户端:缓存更新后组件不呈现(反应变量)

  9. 9

    突变后不影响现有查询的自动更新apollo客户端缓存

  10. 10

    无法在现有状态转换期间更新 - 无论何时更改特定状态

  11. 11

    如何将 HOC 转换为 apollo 的反应组件语法?

  12. 12

    React Native / Redux-setState-在现有状态转换期间无法更新

  13. 13

    在现有状态转换期间无法更新-不使用任何非法的setState()

  14. 14

    收到警告:渲染内部现有状态转换期间无法更新

  15. 15

    在现有状态转换期间无法更新-不使用任何非法的setState()

  16. 16

    获取计数时无法在现有状态转换期间更新

  17. 17

    setState(...):无法在现有状态转换期间更新(例如在 `render` 或其他组件的构造函数中)

  18. 18

    警告:无法在现有状态转换期间更新(例如在 `render` 或其他组件的构造函数中)

  19. 19

    由于在渲染方法中调用了 onClick 方法,因此出现“无法在现有状态转换期间更新”错误

  20. 20

    如何用apollo客户端状态管理替换vuex?

  21. 21

    如何从 Apollo graphql 客户端状态检索值

  22. 22

    变异后React Apollo更新客户端缓存

  23. 23

    Apollo 客户端缓存私有信息

  24. 24

    React - setState errir - 在状态转换期间无法更新

  25. 25

    Apollo客户端未解析UserInputError

  26. 26

    Apollo客户端缓存与Redux

  27. 27

    Apollo客户端延迟刷新

  28. 28

    Apollo 客户端并提前输入

  29. 29

    “无法在现有日期转换期间更新”在 react-native 中使用带有 redux 的 react-navigation

热门标签

归档