我要使用Apollo查询中的subscribeToMore数组。我受此article的启发,希望我要使用功能组件:

useEffect(() => {
    const unsubscribe =
        [subscribeToMore({
            // subscriptionData...
        }), subscribeToMore({
            // subscriptionData...
        })]


    if (unsubscribe.length > 0) {
        for (i = 0; i < unsubscribe.length; i++) {
            return () => unsubscribe[i]()
        }
    }
}, [subscribeToMore])


但是,我得到:


  在unsubscribe [i]()中,unsubscribe [i]未定义

最佳答案

useEffect仅具有一个返回功能。您不能多次调用它。而是在return函数中,您可以检查条件并取消订阅是否有要清除的订阅

useEffect(() => {
    const unsubscribe =
        [subscribeToMore({
            // subscriptionData...
        }), subscribeToMore({
            // subscriptionData...
        })]

    return () => {
       if (unsubscribe.length > 0) {
           for (i = 0; i < unsubscribe.length; i++) {
               unsubscribe[i]()
           }
       }
    }

}, [subscribeToMore])

关于javascript - 如何取消订阅数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61053477/

10-11 23:41