ref vs reactive в Vue 3?

Между ref и reactive есть некоторое vuejs3 сходство в том, что они оба vue3 предоставляют метод для хранения vuejs3 данных и позволяют этим данным vue-composition-api быть реактивными.

Однако:

Высокие уровни различий:

Вы vue3 не можете использовать reactive() для vue-composition-api примитивов (строк, чисел, логических vuejs3 значений) - это то, для чего vue-composition-api вам нужны ссылки, потому vue-composition-api что у вас будут ситуации, когда vue-composition-api вам понадобится «реактивное vue-composition-api логическое значение», например…

Конечно, вы vue3 можете создать объект, который vue-composition-api обертывает примитивное значение vue-composition-api и сделать его реактивным():

const wrappedBoolean = reactive({
  value: true
})

И vue-composition-api вот так вы заново изобрели vue3 реф.

Source: Vue forum discussion

Реактивный

reactive принимает объект и возвращает vue-composition-api реактивный proxy исходному объекту.

Пример

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
    }
  }
}

Объяснение

Как vue3 указано выше, всякий раз, когда vue-composition-api мы хотим изменить или получить vue-composition-api доступ к свойствам page,
скажем, page.ads, page.filteredAds будет vue3 обновляться через прокси.

vuejs3

vue-composition-api

2022-11-13T06:55:35+00:00
Вопросы с похожей тематикой, как у вопроса:

ref vs reactive в Vue 3?