Maison > Questions et réponses > le corps du texte
Je veux pouvoir changer l'orientation de la page lorsque la valeur change dans Pinia, le code fonctionne bien mais la page se recharge et je ne veux pas que la page se recharge.
Voici mon App.vue
fichier
<script setup> import { useaCountdownStore } from "./stores/countdowns"; import { storeToRefs } from "pinia"; const store = useaCountdownStore(); const { theme, language } = storeToRefs(store); theme.value === "dark" ? document.documentElement.classList.add("dark") : false; //works language.value === 'ar' ? document.documentElement.setAttribute('dir','rtl'): false // 需要重新加载页面 </script> <template> <router-view></router-view> </template>
P粉2741615932023-09-12 13:06:04
Nécessite une liaison de données régulière. Dans ce cas, faites appel à un observateur.
watch( language, value => { if (value === 'ar') document.documentElement.setAttribute('dir','rtl') else document.documentElement.removeAttribute('dir') }, { immediate: true } )
Veuillez vous assurer de ne pas accéder à document
lors du rendu côté serveur.
P粉3176793422023-09-12 09:04:32
Essayez de placer votre contenu dans un autre élément plutôt que de le modifier document
. De plus, utilisez les propriétés calculées pour la réactivité.
<script setup> import { useaCountdownStore } from "./stores/countdowns"; import { storeToRefs } from "pinia"; import { computed } from "vue"; const store = useaCountdownStore(); const { theme, language } = storeToRefs(store); const direction = computed(() => language.value === 'ar' ? 'rtl' : 'auto') </script> <template> <div :class="theme" :dir="direction"> <router-view></router-view> </div> </template>