Как отписаться от массива подписки - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть массив subscribeToMore из запроса Apollo, который я хочу использовать. Я был вдохновлен этой статьей , ожидаю, что я хочу использовать функциональный компонент:

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


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

Однако я получаю:

При отказе от подписки [i] (), отписаться [я] не определено

1 Ответ

1 голос
/ 06 апреля 2020

useEffect имеет только одну функцию возврата. Вы не можете назвать это несколько раз. Вместо этого в функции возврата вы можете проверить условие и отписаться, если есть подписки, которые нужно очистить

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

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

}, [subscribeToMore])
...