Mencapai komposisi dan tindak balas yang dipertingkatkan dengan Vue.js 3.
<p>Memandangkan gabungan 'useNumbers.js' berikut dalam Vue.js 3, saya mahu 'nombor' dalam komponen menjadi responsif. Walau bagaimanapun, menambah nilai baharu pada 'nombor' dalam satu komponen tidak akan ditunjukkan dalam komponen kedua. <br /><br />useNumbers.js:</p><p><br /></p>
<pre class="brush:php;toolbar:false;">import { ref } daripada 'vue';
eksport fungsi lalai() {
nombor const = ref([1, 2, 3, 4, 5]);
const addNumber = num =>
numbers.value.push(num);
}
const filterNumber = minNum =>
return numbers.value.filter(curNum => curNum >= minNum);
}
kembalikan { nombor, tambahNombor, penapisNombor }
}</pre>
<p>Komponen A:</p>
<pre class="brush:php;toolbar:false;"><template>
<div>
<h1>Komponen kanak-kanak</h1>
<p>{{ nombor }}</p>
<butang @click="addNumber(45)">Tambah 45</button>
<div class="line"></div>
<Cucu />
</div>
</template>
<persediaan skrip>
import useNumbers daripada '../composables/useNumbers';
import GrandChild daripada './GrandChild.vue';
const { numbers, addNumber } = useNumbers()
</script></pre>
<p>Komponen B:</p>
<pre class="brush:php;toolbar:false;"><template>
<div>
<h1>Komponen GreatGrandChild</h1>
<p>{{ nombor }}</p>
<div class="line"></div>
</div>
</template>
<persediaan skrip>
import useNumbers daripada '../composables/useNumbers';
const {nombor } = useNumbers();
</script></pre>
<p> Setiap kali saya mengklik butang dalam komponen A (menambah 45 pada tatasusunan), perubahan ini tidak ditunjukkan dalam komponen B. Saya tahu bahawa operasi seperti memusnahkan tugasan mengakibatkan kehilangan responsif. </p>
<pre class="brush:php;toolbar:false;">const { numbers, addNumber } = useNumbers()</pre>
<p>Tindak balas rosak. Saya telah mencuba beberapa perkara menggunakan toRef dan toRefs tetapi masih belum menemui penyelesaian. </p>