Ruj lwn. React dalam Vue 3?
P粉743288436
2023-08-27 20:35:30
<p>Lihat beberapa contoh daripada tutorial pratonton Vue 3 sesetengah orang. [Pada masa ini dalam beta]</p>
<p>Saya dapati dua contoh:</p>
<h2>Formula tindak balas</h2>
<pre class="brush:js;toolbar:false;"><template>
<butang @klik="kenaikan">
Kiraan ialah: {{ state.count }}, double ialah: {{ state.double }}
</butang>
</template>
<skrip>
import { reaktif, dikira } daripada 'vue'
eksport lalai {
persediaan() {
keadaan const = reaktif({
kiraan: 0,
berganda: dikira(() => state.count * 2)
})
kenaikan fungsi() {
negeri.kira++
}
kembali {
negeri,
kenaikan
}
}
}
</skrip>
</pra>
<h2>Rujukan</h2>
<pre class="brush:js;toolbar:false;"><template>
<div>
<h2 ref="titleRef">{{ formattedMoney }}</h2>
<masukkan v-model="delta" type="number">
<butang @click="add">Tambah</button>
</div>
</template>
<skrip>
import { ref, computed, onMounted } daripada "vue";
eksport lalai {
persediaan(props) {
//Negeri
wang const = ref(1);
const delta = ref(1);
// Ruj
const titleRef = ref(null);
//Peralatan yang dikira
const formattedMoney = dikira(() => money.value.toFixed(2));
//Kail
onMounted(() => {
console.log("titleRef", titleRef.value);
});
// Kaedah
const add = () => (money.value += Number(delta.value));
kembali {
delta,
wang,
titleRef,
Wang berformat,
Tambah
};
}
};
</skrip>
</pra>
<p><br /></p>
Terdapat beberapa persamaan antara
ref
和reactive
kerana kedua-duanya menyediakan cara untuk menyimpan data dan membenarkan data itu dibalas.Tetapi:
Perbezaan Tahap Tinggi:
Sumber: perbincangan forum Vue
Reaksi
reactive
获取对象并向原始对象返回一个响应式代理
.Contoh
Arahan
Dalam perkara di atas, bila-bila masa kita mahu menukar atau mengakses harta
page
,Contohnya
page.ads
,page.filteredAds
akan dikemas kini melalui proksi.Isi Penting
reactive()
Hanya menerima objek, bukan JS primitif (String, Boolean, Number, BigInt, Symbol, null, undefined)ref()
正在幕后调用reactive()
dipanggil di belakang tabirreactive()
适用于对象,并且ref()
调用reactive()
Memandangkanref()
有一个用于重新分配的.value
属性,reactive()
, objek digunakan untuk kedua-duanyamempunyai atribut
tidak mempunyai atribut ini dan oleh itu tidak boleh ditugaskan semula.value
untuk penugasan semula,ref()
'string'
、true
、23
Maklumat lanjut di sini
reactive()
)ref()
Bila..Ini adalah objek yang tidak perlu diagihkan semula dan anda ingin mengelakkan overhed
ref()
似乎是可行的方法,因为它支持所有对象类型并允许使用.value
重新分配。ref()
是一个很好的起点,但是当您习惯了该 API 后,就会知道reactive()
ref()
.value
.ialah titik permulaan yang baik, tetapi apabila anda membiasakan diri dengan API, anda akan mengetahui bahawa
ref()
,但ref()
mempunyai lebih sedikit overhed, dan anda mungkin mendapati ia lebih sesuai dengan keperluan anda.reactive()
Kes gunaUntuk primitif anda akan sentiasa menggunakan
berguna untuk objek yang perlu diagihkan semula (seperti tatasusunan).reactive()
, tetapimemerlukan penugasan semula harta dan bukannya keseluruhan objek.
Kes gunaKes penggunaan yang baik untuk reactive() ialah set primitif yang dimiliki bersama:
Kod di atas terasa lebih logik berbanding kod di atasref()
Pautan berguna Jika anda masih sesat, panduan mudah ini membantu saya: https://www.danvega.dev/blog/2020/02/12/vue3-ref-vs-reactive/
https://dev.to/ycmjason/thought-on-vue-3-composition-api-reactive-considered-harmful-j8c🎜🎜 Keputusan di sebalik 🎜🎜 dan 🎜 wujud, bersama-sama dengan maklumat penting lain, dalam Vue Composition API RFC: 🎜https://vuejs.org/guide/extras/composition-api-faq. html#kenapa-komposisi-api🎜🎜reactive()
和ref()
Gunakan argumen sahaja: