All quizzesMedium
Options API Deep-dive
Preview — 3 of 10 questions
Quelle est la différence entre watch et watchEffect ?
javascript
<script setup>
import { ref, watch, watchEffect } from 'vue'
const query = ref('')
const results = ref([])
// Option A
watch(query, (newVal) => {
fetchResults(newVal)
})
// Option B
watchEffect(() => {
fetchResults(query.value)
})
</script>Awatch est synchrone, watchEffect est asynchrone
BwatchEffect ne peut observer qu'une seule variable ; watch peut en observer plusieurs
Cwatch observe explicitement une source et donne accès à l'ancienne et la nouvelle valeur — il ne s'exécute pas au démarrage par défaut. watchEffect collecte automatiquement ses dépendances et s'exécute immédiatement
DLes deux sont identiques — watchEffect est un alias de watch
Quest-ce quun composable en Vue 3 et pourquoi est-ce préférable aux mixins ?
javascript
// useCounter.js
import { ref } from 'vue'
export function useCounter(initial = 0) {
const count = ref(initial)
function increment() { count.value++ }
function reset() { count.value = initial }
return { count, increment, reset }
}AUn composable est une fonction qui encapsule de la logique stateful réutilisable avec la Composition API — contrairement aux mixins, les sources des variables sont claires, il n'y a pas de conflits de noms, et le typage TypeScript est naturel
BLes composables sont des fichiers CSS — ils n'ont rien à voir avec la logique Vue
CLes composables remplacent les composants — on n'a plus besoin de .vue avec eux
DLes composables ne peuvent pas contenir de lifecycle hooks
Quand utiliser provide/inject plutôt que les props ?
javascript
<!-- GrandParent.vue -->
<script setup>
import { provide, ref } from 'vue'
const theme = ref('dark')
provide('theme', theme)
</script>
<!-- DeepChild.vue (plusieurs niveaux plus bas) -->
<script setup>
import { inject } from 'vue'
const theme = inject('theme', 'light') // 'light' = default
</script>Aprovide/inject remplacent toujours les props — on ne devrait plus jamais utiliser les props
Bprovide ne peut passer que des valeurs primitives (string, number)
Cinject crée une copie locale non réactive — les changements du parent ne sont pas répercutés
Dprovide/inject servent à partager des données à travers plusieurs niveaux de composants sans prop drilling — idéal pour les thèmes, les configs, ou les services partagés dans un sous-arbre
Sign up free to play
Answer all 10 questions (7 more), see explanations for every answer, and track your score.