Vue.js Reactivity

Working with reactive data in Vue

ref

import { ref } from 'vue';
const count = ref(0); # create reactive reference
count.value++; # access/modify with .value

reactive

import { reactive } from 'vue';
const state = reactive({ # create reactive object
    count: 0,
    name: 'John'
});
state.count++; # direct access (no .value)

computed

import { computed } from 'vue';
const doubleCount = computed(() => { # computed property
    return count.value * 2
});

watch

import { watch } from 'vue';
watch(count, (newVal, oldVal) => { # watch ref
    console.log(newVal);
});

watchEffect

import { watchEffect } from 'vue';
watchEffect(() => { # auto-track dependencies
    console.log(count.value);
});

toRefs

import { toRefs } from 'vue';
const { count, name } = toRefs(state); # destructure while keeping reactivity