Obtenez une composition et une réactivité améliorées avec Vue.js 3.
<p>Étant donné les « useNumbers.js » combinés suivants dans Vue.js 3, je souhaite que les « numéros » du composant soient réactifs. Cependant, l'ajout d'une nouvelle valeur aux « nombres » dans un composant ne sera pas reflété dans le deuxième composant. <br /><br />useNumbers.js:</p><p><br /></p>
<pre class="brush:php;toolbar:false;">importer { ref } depuis 'vue';
exporter la fonction par défaut() {
nombres const = ref([1, 2, 3, 4, 5]);
const addNumber = num =>
nombres.value.push(num);
}
const filterNumber = minNum =>
return number.value.filter(curNum => curNum >= minNum);
}
retourner { nombres, addNumber, filterNumber }
}</pré>
<p>Composant A :</p>
<pre class="brush:php;toolbar:false;"><template>
<div>
<h1>Composant enfant</h1>
<p>{{ chiffres }}</p>
<bouton @click="addNumber(45)">Ajouter 45</bouton>
<div class="line"></div>
<Petit-Enfant />
</div>
</modèle>
<configuration du script>
importer des useNumbers depuis '../composables/useNumbers' ;
importer GrandChild depuis './GrandChild.vue' ;
const { nombres, addNumber } = useNumbers()
</script></pre>
<p>Composant B :</p>
<pre class="brush:php;toolbar:false;"><template>
<div>
<h1>Composant GreatGrandChild</h1>
<p>{{ chiffres }}</p>
<div class="line"></div>
</div>
</modèle>
<configuration du script>
importer des useNumbers depuis '../composables/useNumbers' ;
const { nombres } = useNumbers();
</script></pre>
<p> Chaque fois que je clique sur le bouton dans le composant A (en ajoutant 45 au tableau), ce changement n'est pas reflété dans le composant B. Je sais que des opérations comme la déstructuration des affectations entraînent une perte de réactivité. </p>
<pre class="brush:php;toolbar:false;">const { nombres, addNumber } = useNumbers()</pre>
<p>Réactivité cassée. J'ai essayé quelques choses en utilisant toRef et toRefs mais je n'ai pas encore trouvé de solution. </p>