vue3 响应式数据

2022-11-30  本文已影响0人  Cherry丶小丸子
reactive
// 定义复杂数据类型的响应式

import { reactive } from "vue";

export default {
    setup(){
        let arr = reactive({
            name: 'tyy',
            age: 24,
            heigh: 165
        });
        return { arr };
    }
}
ref
// 定义普通数据类型的响应式,获取/修改数据需要 .value,在模板中不需要 .value 可以直接使用

<template>
    <div>
        <div>姓名:{{ name }}</div>
        <button @click="btnArr">按钮</button>
    </div>
</template>
<script>
import { ref } from "vue";

export default {
    setup(){
        let name = ref('tyy');

        let btnArr = () => {
            name.value = "唐园园";
        };
        return { name, btnArr };
    }
}
</script>
toRef
// 当我们在模板中渲染数据时,不希望用前缀的时候可以使用组合 toRef()
// toRef()是函数,转换响应式对象中某个属性为单独响应式数据,并且值是关联的
<template>
    <div>
        <div>姓名:{{ name }}</div>
        <div>年龄:{{ age }}</div>
        <button @click="btnArr">按钮</button>
        <button @click="btnArr1">按钮1</button>
    </div>
</template>
<script>
import { toRef } from "vue";

export default {
    setup(){
        let arr = reactive({
            name: 'tyy',
            age: 24
        });

        let name = toRef(arr, 'name');
        let age = toRef(arr, 'age');

        let btnArr = () => {
            arr.name = "唐园园";
            arr.age = 23;
        };
        let btnArr1 = ()=>{
            name.value = 'cxx';
            age.value = '58';
        }
        return { name, age, btnArr, btnArr1 };
    }
}
</script>
toRefs
// toRefs 函数可定义转换响应式中所有属性为响应式数据,通常用于结构 reactive 定义的对象,
// 转换响应式对象中所有属性(部分也行)为单独响应式数据,对象成为普通对象,并且值是关联的

<template>
    <div>
        <div>姓名:{{ name }}</div>
        <div>年龄:{{ age }}</div>
        <button @click="btnArr">按钮</button>
        <button @click="btnArr1">按钮1</button>
    </div>
</template>
<script>
import { toRefs } from "vue";

export default {
    setup(){
        let arr = reactive({
            name: 'tyy',
            age: 24
        });
        // 转换
        let { name, age } = toRefs(arr);
        let btnArr = () => {
            arr.name = "唐园园";
            arr.age = 23;
        };
        let btnArr1 = () => {
            name.value = "ree";
            age.value = 29;
        };
        return { name, age, btnArr, btnArr1 };
    }
}
</script>
上一篇 下一篇

猜你喜欢

热点阅读