Hej, chce stworzyc dynamiczne sciezki ksiazki/[name]
i artykuly/[name]
w NextJS. Oczywiscie moglbym stworzyc foldery ksiazki
i artykuly
i tam wrzucic folder [name]
i plik page.tsx
ale problem polega na tym ze struktura obu tych stron jest niemal identyczna tylko wlasnie roznia sie adresem url, adresem url pociagniecia danych (fetch(../books/:id
vs fetch(../articles/:id
) itp wiec chcialbym uniknac kopiowania i wklejania. Zastanawiam sie czy da sie jakos to upchac w jednym miejscu ale zeby roznily sie adresy url, cos w stylu [book|article]/[name]/page.tsx
i potem w page.tsx
miec Page({params}: {params: {bookOrArticle: "book" | "article", name: string})
i uzyc bookOrArticle
zeby odroznic kiazki od artyykulow. Da sie tak?
0
0
Takiego or
a to chyba nie postawisz (choć nie jestem pewny tak szczerze), ale... routing w formie plików zamiast klasycznej listy <Route>
w kodzie jest na swój sposób pociągający (choć po latach to mam dość już tego routingu, choć rozumiem, że to wygodne z perspektywy budowania potem kodu), ale idą za tym ograniczenia i czasem trzeba zduplikować trochę kodu. Teraz or
, a potem się okaże, że przydałoby się if (warunek)
w nazwie pliku wpisać
Ogólnie mam wrażenie, że Cię ciągnie w złym kierunku. Uniwersalny routing, potem jakaś magiczna zmienna, która ma coś rozdzielać, żeby potem coś tam wywołać warunkowo. Po co? Utruniasz/uniemożliwiasz code splitting i zaniżasz czytelność.
A jak musisz to zrób sobie po prostu [type]/[name]/page.tsx
a potem
if (type === "book") {
return <Book ... /> // czy coś tam
}
if (type === "article") {
return <Article ... />
}
return notFound()