Réf vs React dans Vue 3 ?
P粉743288436
P粉743288436 2023-08-27 20:35:30
0
2
497
<p>Découvrez quelques exemples tirés des didacticiels d'aperçu de Vue 3 de certaines personnes. [Actuellement en version bêta]</p> <p>J'ai trouvé deux exemples :</p> <h2>Formule de réaction</h2> <pre class="brush:js;toolbar:false;"><template> <bouton @click="incrément"> Le nombre est : {{ state.count }}, le double est : {{ state.double }} </bouton> </modèle> <script> importer { réactif, calculé } depuis 'vue' exporter par défaut { installation() { état const = réactif ({ compte: 0, double : calculé(() => state.count * 2) }) fonction incrément() { état.count++ } retour { État, incrément } } } </script> ≪/pré> <h2>Référence</h2> <pre class="brush:js;toolbar:false;"><template> <div> <h2 ref="titleRef">{{ formattedMoney }}</h2> <input v-model="delta" type="numéro"> <bouton @click="ajouter">Ajouter</bouton> </div> </modèle> <script> importer { ref, calculé, onMounted } depuis "vue" ; exporter par défaut { configuration (accessoires) { //État const argent = réf(1); const delta = réf(1); // Réfs const titleRef = ref(null); // Accessoires calculés const formattedMoney = calculated(() => money.value.toFixed(2)); //Crochets onMounted(() => { console.log("titreRef", titreRef.value); }); // Méthodes const add = () => (argent.valeur += Nombre (delta.valeur)); retour { delta, argent, titreRéf, argent formaté, ajouter } ; } } ; </script> ≪/pré> <p><br /></p>
P粉743288436
P粉743288436

répondre à tous(2)
P粉231112437

Il existe certaines similitudes entre

refreactive dans le sens où ils fournissent tous deux un moyen de stocker des données et permettent de répondre aux données.

Mais :

Différence de haut niveau :

const wrappedBoolean = reactive({
  value: true
})

Source : discussion sur le forum Vue

Réaction

reactive 获取对象并向原始对象返回一个响应式代理.

Exemple

import {ref, reactive} from "vue";

export default {
  name: "component",
  setup() {
    const title = ref("my cool title")
    const page = reactive({
      contents: "meh?",
      number: 1,
      ads: [{ source: "google" }],
      filteredAds: computed(() => {
        return ads.filter(ad => ad.source === "google")
      })
    })
    
    return {
       page, 
       title
    }
  }
}

Instructions

Dans ce qui précède, chaque fois que nous souhaitons modifier ou accéder à une propriété de page,
Par exemple page.adspage.filteredAds sera mis à jour via proxy.

P粉482108310

Points clés

  • reactive() N'accepte que les objets, pas Les primitives JS (String, Boolean, Number, BigInt, Symbol, null, undefined)
  • ref() 正在幕后调用 reactive() est appelé en coulisses
  • reactive() 适用于对象,并且 ref() 调用 reactive()Puisque
  • s'applique aux objets et
  • appelle ref() 有一个用于重新分配的 .value 属性,reactive(), les objets s'appliquent aux deux
Cependant,

a un attribut .value pour la réaffectation,

n'a pas cet attribut et ne peut donc pas être réaffecté

ref()

Utilisation
  • Quand...'string'true23
  • C'est un primitif
  • (comme etc.)
Il s'agit d'un objet que vous devrez réaffecter plus tard (comme un tableau -

Plus d'informations icireactive())

  • ref()Quand...

Il s'agit d'un objet qui n'a pas besoin d'être réaffecté et vous souhaitez éviter les frais généraux de

ref() 似乎是可行的方法,因为它支持所有对象类型并允许使用 .value 重新分配。 ref() 是一个很好的起点,但是当您习惯了该 API 后,就会知道 reactive()

Résumé

ref()

semble être la voie à suivre car il prend en charge tous les types d'objets et permet la réaffectation à l'aide de .value.

est un bon point de départ, mais à mesure que vous vous habituerez à l'API, vous apprendrez que ref(),但 ref() entraîne moins de frais généraux et vous constaterez peut-être qu'elle répond mieux à vos besoins.

reactive() Cas d'utilisation

Pour les primitives, vous utiliserez toujours reactive(), mais

est utile pour les objets qui doivent être réaffectés (tels que les tableaux).

setup() {
    const blogPosts = ref([]);
    return { blogPosts };
}
getBlogPosts() {
    this.blogPosts.value = await fetchBlogPosts();
}
Ce qui précède

nécessite de réaffecter une propriété plutôt que l'objet entier.

setup() {
    const blog = reactive({ posts: [] });
    return { blog };
}
getBlogPosts() {
    this.blog.posts = await fetchBlogPosts();
}

Cas d'utilisation

Un bon cas d'utilisation pour reactive() est un ensemble de primitives qui vont ensemble :

const person = reactive({
  name: 'Albert',
  age: 30,
  isNinja: true,
});
Le code ci-dessus semble plus logique que le code ci-dessus

const name = ref('Albert');
const age = ref(30);
const isNinja = ref(true);
ref()Liens utiles Si vous êtes toujours perdu, ce guide simple m'a aidé : https://www.danvega.dev/blog/2020/02/12/vue3-ref-vs-reactive/

reactive()ref() Utilisez uniquement arguments :

https://dev.to/ycmjason/thought-on-vue-3-composition-api-reactive-considered-harmful-j8c🎜🎜 Les décisions derrière 🎜🎜 et 🎜 existent, avec d'autres informations importantes, dans la RFC de l'API Vue Composition : 🎜https://vuejs.org/guide/extras/composition-api-faq. html#pourquoi-composition-api🎜🎜
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal