zoukankan      html  css  js  c++  java
  • vue3 reactive函数用法

    reactive的用法与ref的用法相似,也是将数据变成响应式数据,当数据发生变化时UI也会自动更新。不同的是ref用于基本数据类型,而reactive是用于复杂数据类型,比如对象和数组
    例如:定义一个对象类型的变量user

    <template>
    <div>
    <p>{{ user }}</p>
    <button @click="increase">click me! one year later</button>
    </div>
    </template>

    <script>
    import { reactive } from "vue";
    export default {
    name: "reactive",
    setup() {
    const user = reactive({ name: "Alice", age: 12 });
    function increase() {
    ++user.age
    }
    return { user, increase };
    },
    };
    </script>

    如上,当点击按钮时,让数据user.age加1,当Vue发现数据发生变化,UI会自动更新
    那我们验证了,确实reactive函数可以将一个复杂数据类型变成响应式数据。我们不妨将reactive函数执行的结果打印出来看下,看看它返回值是什么
    reactive将传递的对象包装成了proxy对象

    我们发现,reactive执行结果是将传递的对象包装成了proxy对象
    接下来我们测试一下,如果传递基本数据类型呢?

    <template>
    <div>
    <p>{{ userAge }}</p>
    <button @click="increase">click me! one year later</button>
    </div>
    </template>

    <script>
    import { reactive } from "vue";
    export default {
    name: "reactive",
    setup() {
    let userAge = reactive(12);
    function increase() {
    console.log(userAge);
    ++userAge;
    }
    return { userAge, increase };
    },
    };
    </script>

    运行发现,基本数据传递给reactive,reactive并不会将它包装成porxy对象,并且当数据变化时,界面也不会变化

    需要注意的是,reactive中传递的参数必须是json对象或者数组,如果传递了其他对象(比如new Date()),在默认情况下修改对象,界面不会自动更新,如果也需要具有响应式,可以通过重新赋值的方式实现

    使用ref函数可以处理基本数据,使期变成响应式数据

  • 相关阅读:
    Struts2拦截器defaultStack与paramsPrepareParamsStack
    Java中的数据类型BigDecimal
    JfreeChart报表数据点显示、链接
    JPA+Hibernate3 CRUD(增删改查操作)
    Ibatis的批量处理iterateiterate标签
    .net中split的用法,asp.net字符分隔
    存储过程中RETURN语句的返回值
    SQL自定义函数学习修改和删除和管理
    SqlCommand 方法
    由于该计算机受到限制本次操作已被取消请与你的系统管理员联系
  • 原文地址:https://www.cnblogs.com/onesea/p/15540978.html
Copyright © 2011-2022 走看看