Поддержка маршрутизации React/NextJS для компонента ссылки внука не работает

0

Вопрос

Я вроде как застрял... и не могу понять, не проблема ли это с NextJS.

У меня есть три компонента:

  • Список карт (перечисляет все карты - имеет несколько <Card> дети)
  • Карта (представление карты - имеет <Button> ребенок)
  • Кнопка (Отображает кнопку в карточке - использует <Link> компонент)

Компонент кнопки содержит компонент nextjs/link.

Мне нужно передать ссылку на статью из списка карточек, через карточку, в кнопку (и здесь в мой <Link>'s href)...

Это отлично работает, если я передаю ссылку (например, /mytest) непосредственно с карты на кнопку... Он также показывает строку, когда я направляю ее из списка карт через карточку в кнопку, чтобы просто распечатать ее на экране - да, я вижу ее значение... но это не работает, когда я это делаю:

export default function Button({ text, link }) {
  return (
    <Link href={link} passHref>
      <button className="bg-transparent hover:bg-primary text-link font-semibold hover:text-white py-1 px-3 border border-link hover:border-transparent rounded self-center" >
        {text}
      </button>
    </Link>
  );
}

ДА, {text} работает - также передается из компонента бабушки и дедушки (список карточек). Но компонент Ссылки не принимает переданное предложение, если оно не было отправлено напрямую из его прямого родительского компонента! (Да, это работает, если я передам строку только на один уровень - но если она передана из списка карт (и только что пройдена), она не будет принята!)

Необработанная ошибка во время выполнения Ошибка: Ошибка Типа опоры: Опора href ожидает, что string или object в <Link>, но получил undefined вместо.

И да, я знаю, я мог бы использовать государственное управление, но я не хочу настраивать для этого все государственное управление, так как оно больше нигде не понадобится.

Заранее большое вам спасибо, ребята!

Sascha

hyperlink next.js reactjs
2021-11-14 14:16:17
1

Лучший ответ

0

Я "исправил это" (не горжусь!), просто создав еще одну строку перед передачей реквизита компоненту link.

export default function Button({ text, link }) {
  return (
    <Link href={`${link}`} passHref>
      <button className="bg-transparent hover:bg-primary text-link font-semibold hover:text-white py-1 px-3 border border-link hover:border-transparent rounded self-center" >
        {text}
      </button>
    </Link>
  );
}

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

Гритц,

Sascha

2021-11-15 07:50:43

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................