javascript - Varför tillämpas inte malltexten för titeln i Next.js metadata för min startsida?


Jag arbetar på ett Next.js-projekt och försöker ställa in dynamisk metadata för olika sidor. Jag vill att min hemsidas titel ska visas som Hem | Min Webbplats, men den visas bara som Hem. Så här har jag konfigurerat metadata för layouten och hemsidan:

Layout :

export const metadata: Metadata = {
  title: {
    template: "%s | My Website",
    default: "My Website",
  },
  description: "My Website",
};

startsida:

export const metadata: Metadata = {
  title: "Home",
};

Jag förväntade mig att startsidans titel skulle använda mallen och visa "Hem | Min Webbplats", men den visar bara "Hem". Hur kan jag försäkra mig om att mallen tillämpas korrekt på startsidans titel?

Next.js v14.2.7

Svar #1

Dokumenten säger detta:

title.template gäller för barnrutesegment och inte segmentet där det är definierat. title.default krävs när du lägger till en title.template. title.template som definieras i layout.js gäller inte för en titel definierad i en page.js i samma rutesegment. title.template definierad i page.js har ingen effekt eftersom en sida alltid är det avslutande segmentet (den har inga barnrutesegment). title.template har ingen effekt om en rutt inte har definierat en title eller title.default.

Vilket betyder att du inte kan använda det på samma segment, du kan använda det på undersegment till exempel app/about/page.tsx eller app/blog/layout.tsx