• vue3_setup基础_渲染函数(ref,reactive)


     一、setup语法糖

    是什么:组合式Api  (vue2为option Api)

    来解决什么问题:使用(data,computed,methonds,watch)组件选项来组织逻辑通常都很有效。然而,当我们组件变的更大的时候,逻辑关注点的列表也会增长。尤其对于那些一开始编写这些组件的人来说,这会导致组件难以阅读和理解。      

     二、vue2和vue3的响应区别

     区别: 

            vue2中我们不能对数组或者对象进行直接改变

                  采用Object.definedProperty()要使用this.$set()

                  Object.definedProperty()存在问题

                         a.不能监听到数组或者对象的变化

                         b.必须遍历对象的每个属性有多重的时候需要递归对数据进行处理

                 

                 

                  

              vue3中可以使用reactive对引用性数据类型进行定义实现Proxy响应式数据

                   Proxy响应式(ref用来定义基础数据类型  reactive用来定义引用性数据类型)

                            a.不需要遍历(多层对象数据时候只需要递归)

       ​​           

                  

                  

    三、setup语法糖插件 unplugin-auto-import

    解决的场景:在组件中开发无需每次引入 impot { ref } ...

            1.下载安装 npm i unplugin-auto-import -D

            2.配置:vite.config.js

    1. import { defineConfig } from 'vite'
    2. import vue from '@vitejs/plugin-vue'
    3. import AutoImport from 'unplugin-auto-import/vite'
    4. // https://vitejs.dev/config/
    5. export default defineConfig({
    6. plugins: [
    7. vue(),
    8. AutoImport({
    9. imports: ['vue', 'vue-router']//自动导入vue和vueRouter相关的函数
    10. })
    11. ]
    12. })
    1. <template>
    2. <div class="index">
    3. {{ obj }}
    4. <div>{{ arr }}div>
    5. <button @click="btn">改变obgbutton>
    6. div>
    7. template>
    8. <script setup>
    9. let arr = ref(["a", "b", "c"]);
    10. let obj = reactive({
    11. a: 1,
    12. b: 2,
    13. });
    14. let btn = () => {
    15. console.log(123);
    16. obj.c = 3;
    17. arr.value[0] = "xxxx";
    18. };
    19. onMounted(() => {
    20. console.log("onMounted");
    21. });
    22. onBeforeUpdate(() => {
    23. console.log("onBeforeUpdate");
    24. });
    25. onUpdated(() => {
    26. console.log("onUpdated");
    27. });
    28. onUnmounted(() => {
    29. console.log("onUnmounted");
    30. });
    31. script>

    四、使用渲染函数

    ref和reactive是vue3中用来实现数据响应式的API

    1.ref定义基本数据类型

            在改变ref定义的数据时候需要.value实现赋值,否则不能实现响应式改变

            

            

            

            

    2.reactive定义引用数据类型

            reactive定义基本类型的时候会出现警告

    注意:

      1.ref用于定义基本类型和引用类型,reactive仅用于定义引用类型
      2.reactive只能用于定义引用数据类型的原因在于内部是通过ES6的Proxy实现响应式的,而Proxy不适用于基本数据类型
      3.ref定义对象时,底层会通过reactive转换成具有深层次的响应式对象,所以ref本质上是reactive的再封装
      4.在脚本里使用ref定义的数据时,记得加.value后缀
      5.在定义数组时,建议使用ref,从而可避免reactive定义时值修改导致的响应式丢失问题

  • 相关阅读:
    namespace命名空间
    操作系统——磁盘操作
    Centos7 系统开通后修改数据盘挂载目录
    一文读懂如何部署具有外部数据库的高可用 K3s
    面试题:GBDT每一轮是在拟合负梯度,那XGBoost每一轮又在拟合什么?
    第一次Java面试
    1024 程序员节,圆一个小小的梦
    nodejs+vue家教管理系统
    Three.js一学就会系列:01 第一个3D网站
    Prophet在R语言中进行时间序列数据预测
  • 原文地址:https://blog.csdn.net/slom_fxt/article/details/133793197