javascript - Next.js - _app.js tillstånd går förlorat vid siduppdatering/SSR
Inte säker på om detta är en funktion eller en bieffekt av att rendera på serversidan, men alla tillstånd som lagras i den exponerade _app.js-sidan förloras varje gång jag antingen uppdaterar sidan eller besöker sidan direkt via URL-inmatning. Next.js hävdar att _app.js-sidan är för "Att behålla tillstånd när man navigerar mellan sidor", så detta borde fungera.
All tillstånd bevaras när man navigerar på klientsidan med <Link>-komponenten.
Jag försöker lagra icke-känslig data utan att använda cookie/session/local storage.
Kan någon bekräfta om detta är det bästa tillvägagångssättet eller om jag bara borde använda en av dessa tekniker?
Glad att posta koden om det behövs.
Svar #1
Next.js-appar använder SSR vilket betyder att din applikation är universell. När du navigerar genom sidor utan uppdatering sker detta på klientsidan, när du uppdaterar sidan sker detta på serversidan. Du kan använda cookies för att behålla den data du behöver eftersom du kan komma åt cookies både på klienten och servern, så när du uppdaterar sidan kan du kontrollera om cookien finns och göra vissa saker enligt detta.
Svar #2
När du uppdaterar sidan startar _app.js, och dess kod körs om. Varje tillstånd du sätter i _app.js gäller bara för den nuvarande webbläsarsessionen. Om du vill att tillståndet ska bestå måste du använda cookies eller Localstorage.
Men om du omdirigeras till en ny sida, renderas inte din app om så _app.js-koden körs inte. Det är därför du kan se en varning från next.js om du navigerar med <a>-element. ">Använd inte ett <a>-element för att navigera till /. Använd <Link />". Det är därför next.js förkunnar: "Behåll tillstånd vid navigering mellan sidor"