Next JS Router & Jest: как мне сменить событие смены маршрутизатора - PullRequest
0 голосов
/ 29 января 2020

Я использую next-routes и в своем компоненте React я использую ниже useEffect кодовый блок для обнаружения Router события изменения:

useEffect(() => {
  // THIS BLOCK WILL BE EXECUTED WHEN THE COMPONENT IS ALREADY MOUNTED AND SCREEN WOULD BE REDNDERED IN WHEN ROUTED CLIENT SIDE
  const handleRouterChangeComplete = url => {
    // console.log('INNNN handleRouterChangeComplete url = ', url);
    // MY REST OF THE LOGIC HERE
  };

  // THIS BLOCK WILL BE EXECUTED WHEN THE SCREEN WOULD BE REDNDERED IN WHEN ROUTED CLIENT SIDE
  Router.events.on('routeChangeComplete', handleRouterChangeComplete);
  return () => {
    Router.events.off('routeChangeComplete', handleRouterChangeComplete);
  };
}, []);

Я использую jest для написания модульного теста чехол для этого компонента и ошибка ниже:

TypeError: Cannot read property 'on' of undefined

      183 |
      184 |     // THIS BLOCK WILL BE EXECUTED WHEN THE SCREEN WOULD BE REDNDERED IN WHEN ROUTED CLIENT SIDE
    > 185 |     Router.events.on('routeChangeComplete', handleRouterChangeComplete);

Кто-нибудь может помочь мне с надругательством над событием Router Change? Спасибо

1 Ответ

0 голосов
/ 29 января 2020

Вы можете вызвать соответствующее событие изменения, используя Router.events.emit('event-name');

Код был взят из реализации маршрутизатора .

...