Нужно ли очищать props.history.listen в React Router при использовании эффекта? Если так, то как правильно это сделать? - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь реализовать что-то, что требует прослушивания местоположения.

    useEffect(() => {
        props.history.listen(location => {
            // do stuff here
        });
        return () => {
            props.history.listen(location => {
                // now stop doing stuff
            });
        };
    }, []);

Я видел ссылку на unlisten(), но это не подкреплено большим количеством голосов, и если я это сделаю console.log(props.history.unlisten()) возвращается как not a function

Это делается в приложении. js. Я предполагаю, что это должно быть очищено, но я не уверен, что это действительно должно быть.

Нужно ли это очищать? Если да, то как правильно это сделать?

1 Ответ

3 голосов
/ 18 февраля 2020

Возвращаемое значение из props.history.listen является функцией. Вызов этой функции приведет к завершению, поэтому вам просто нужно вернуть ее:

useEffect(() => {
  const unlisten = props.history.listen(location => {
    // do stuff here
  });
  return unlisten;
}, []);

Или:

useEffect(() => {
  return props.history.listen(location => {
    // do stuff here
  });
}, []);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...