【问题标题】:Cannot read property 'subscribeToMore' of undefined in Apollo无法读取 Apollo 中未定义的属性“subscribeToMore”
【发布时间】:2020-10-03 05:39:30
【问题描述】:

我正在尝试在 Apollo 客户端中创建订阅,但每次我保存组件时都会导致刷新,我收到此错误:

这是我的代码:

const QUERY = gql`
  {
    getEventsSection(id: "trending") {
      _id,
      events 
    }
  }
`;

const SUBSCRIPTION = gql`
    subscription {
      getEventsSection(id: "trending") {
        _id,
        events 
      }
    }
`;
    const [state, setState] = useState(null);
        const { loading, error, data, subscribeToMore } = useQuery(QUERY);

        useEffect(() => {
            const unsubscribe = subscribeToMore({
                document: SUBSCRIPTION,
                updateQuery: (prev, {subscriptionData}) => {
                    console.log(subscriptionData);
                }
            });
            return () => unsubscribe();
        }, [data])

我做错了什么?谢谢!

【问题讨论】:

    标签: reactjs react-native


    【解决方案1】:

    您似乎没有在updateQuery 回调中返回任何内容。

    作为per docs

    请注意,updateQuery 回调必须返回一个与初始查询数据形状相同的对象,否则不会合并新数据。这里将新评论推送到条目的 cmets 列表中:

    还有remove unsubscribe在使用效果

    【讨论】:

    • 我尝试了const {data} = subscriptionData; return Object.assign({}, prev, data);,但我仍然收到错误消息。似乎subscribeToMore 有时在组件刷新时未定义。第一次加载组件时,订阅有效,但我无法保存文件,这会导致组件重新加载。我还返回了相同形状的数据查询对象。
    • 你有没有弄清楚是什么原因造成的?
    猜你喜欢
    • 2021-07-20
    • 2019-05-12
    • 1970-01-01
    • 2021-06-21
    • 2020-07-06
    • 2020-02-01
    • 2021-01-17
    • 1970-01-01
    • 2020-12-03
    相关资源
    最近更新 更多