default.vueレイアウトにこのコードの平和があります
beforeCreate() {
console.warn('Cookie val=' + Cookies.get('dte'));
console.warn('Cookie val is for dark: ' + (Cookies.get('dte') === 'true'));
var userDarkThemeEnabled = this.$store.getters.isDarkThemeEnabledUser;
console.warn('created userDarkThemeEnabled:' + userDarkThemeEnabled);
if (userDarkThemeEnabled == null) {
this.goDark = false;
return;
}
this.goDark = userDarkThemeEnabled;
},
コンソールで私が見る
**Nuxt SSR**
Cookie val=undefined
Cookie val is for dark: false
created userDarkThemeEnabled: false
**Client Side**
Cookie val=true
Cookie val is for dark: true
created userDarkThemeEnabled: true
この beforeCreate フックは、ページのリロード時に SSR とクライアント側に対して 2 回呼び出すため、SSR の変数 goDark が値 false を取得し、vuetify がライト テーマを適用し、その後 goDark が true になり、vuetify がテーマをダークに変更するため、Vuetify でカラー テーマの点滅が発生しました。
this.goDark=true のように値をハードコーディングすると、ページのリロード時に SSR とクライアント側に適用されます。私の質問は、SSR で匿名ユーザー (まだログインしていないが、既にテーマを変更したユーザー) に保存されている値を取得する方法はありますか?