следующий / маршрутизатор: Невозможно прочитать свойство pathname со значением null (сборник рассказов) - PullRequest
2 голосов
/ 19 июня 2020

У меня есть приложение, в котором используются Next. js и MaterialUI. Для правильной работы компонента Link с MaterialUI у меня есть специальный компонент Link, который выглядит следующим образом:

function Link(props) {
  const {
    href,
    activeClassName = 'active',
    className: classNameProps,
    innerRef,
    naked,
    prefetch,
    ...other
  } = props;

  const router = useRouter();
  const pathname = typeof href === 'string' ? href : href.pathname;
  const className = clsx(classNameProps, {
    [activeClassName]: router.pathname === pathname && activeClassName
  });

  if (naked) {
    return (
      <NextComposed
        className={className}
        ref={innerRef}
        href={href}
        prefetch={prefetch}
        {...other}
      />
    );
  }

  return (
    <MuiLink component={NextComposed} className={className} ref={innerRef} href={href} {...other} />
  );
}

Он отлично работает, когда мне это нужно. Однако, когда я начинаю добавлять свои компоненты (с помощью этой ссылки) в Storybook, я получаю сообщение об ошибке:

Uncaught TypeError: Cannot read property 'pathname' of null
        at Link 

Пример использования Link в компоненте, который я добавляю в Storybook:

const MyComponent = (props) => (<Button
                    className={classes.loginButton}
                    disableRipple
                    edge="end"
                    variant="contained"
                    color="secondary"
                    component={Link}
                    naked
                    href="/login"
                  >
                    Login
                  </Button>)

Когда я пытаюсь использовать маршрутизатор console.log (), я получаю null, что странно. Что я здесь делаю не так?

1 Ответ

0 голосов
/ 30 июля 2020

Я столкнулся с той же проблемой при обновлении до Next v9.5. Похоже, что компонент Link предполагает, что присутствует следующий маршрутизатор.

Этот PR , похоже, решает проблему. Обновление до v9.5.1-canary.1 версии решило эту проблему для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...