Reacționează/NextJS de rutare prop de la un nepot Link componentă nu funcționează

0

Problema

M-am cam blocat... si nu-mi dau seama dacă aceasta este o problemă cu NextJS.

Am trei componente:

  • CardsList (listează toate cărțile - are mai multe <Card> copii)
  • Card (reprezentare de o carte de - a o <Button> copil)
  • Butonul (Afișează un buton în carte - foloseste <Link> component)

Butonul componentă conține un nextjs/link-ul de componentă.

Am nevoie pentru a trece link-ul de la articolul la CardsList, prin Card, în Buton (și de aici în <Link>modelului href)...

Aceasta funcționează perfect, dacă am trece link-ul (de exemplu, /mytest) direct de pe Cardul de la Buton... Se arată, de asemenea, String când am traseu de CardsList, prin Card în buton doar pentru a imprima pe ecran - da, eu pot vedea valoarea, dar aceasta nu funcționează atunci când am face acest lucru:

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>
  );
}

Da, {text} funcționează, de asemenea, transmise de la bunici componentă (CardsList). Dar Link-ul de componentă nu accepta trecut prop dacă acesta nu a fost trimis direct de la ei direct componentei părinte! (Da, funcționează, dacă am trece Șir doar un singur nivel - dar dacă e trecut de CardsList (și tocmai a trecut) nu vor fi acceptate!)

Netratată Eroare de Execuție Eroare: nu a Reușit prop tip: prop href se așteaptă o string sau object în <Link>dar am undefined în schimb.

Și da, știu, mi-ar prinde management de stat, dar nu vreau să înființeze tot statul de management pentru acest lucru - ca nu va avea nevoie de ea oriunde altundeva.

Vă mulțumesc foarte mult în avans, băieți!

Sascha

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

Cel mai bun răspuns

0

Am "reparat-o" (nu mândru!) doar prin crearea de un alt Șir înainte de a trece la prop de a link-ul de componentă.

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>
  );
}

Asta e ciudat... și poate voi găsi un motiv de ce în viitor.

Greetz,

Sascha

2021-11-15 07:50:43

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................