美文网首页
vue3的ref

vue3的ref

作者: Birdd | 来源:发表于2022-06-30 11:09 被阅读0次

ref

接受一个内部值并返回一个响应式且可变的 ref 对象。ref 对象仅有一个 .value property,指向该内部值。注意被ref包装之后需要.value 来进行赋值

<template>
  {{ value11 }}
  <button @click="count()">count++</button>
</template>
<script>
import {
  ref,
} from "vue";
export default {
  setup() {
    const  value11 = ref(0);
    function count() {
      value11.value ++;
      console.log(value11);
    }
    return {
      count,
      value11,
    };
  },
};
</script>

shallowRef

创建一个跟踪自身 .value 变化的 ref,但不会使其值也变成响应式的

triggerRef

强制更新页面DOM

customRef

customRef 是个工厂函数要求我们返回一个对象 并且实现 get 和 set
可以实现过滤,可以当成计算属性来实现防抖,filters等功能

<template>
  ref:{{ valueRef }}
  <button @click="changeRef()">改变ref</button>
  shallowRef:{{ valueShallowRef }}
  <button @click="changeShallowRef()">改变ShallowRef</button>
  <button @click="changeShallowRef2()">改变ShallowRef2</button>
  <button @click="changeTriggerRef()">改变TriggerRef</button>
  myCustomValue:{{ myCustomValue }}
  <button @click="changeCustomRef()">改变customRef</button>
</template>
<script>
import { ref, shallowReactive, shallowRef, triggerRef ,customRef} from "vue";
export default {
  setup() {
    //改变ref
    const valueRef = ref(0);
    function changeRef() {
      valueRef.value++;
    }
    //改变ShallowRef
    const valueShallowRef = shallowRef({
      name: "犬夜叉",
    });
    function changeShallowRef() {
      valueShallowRef.value.name = "杀生丸";
      console.log(valueShallowRef.value.name);
    }
    function changeShallowRef2() {
      valueShallowRef.value = { name: "杀生丸" };
      console.log(valueShallowRef.value.name);
    }
    function changeTriggerRef() {
      valueShallowRef.value.name = "杀生丸";
      console.log(valueShallowRef.value.name);
      triggerRef(valueShallowRef);
    }
    function myCustomRef(value) {
      return customRef((track, trigger) => {
        return {
          get() {
            //追踪
            track();
            return  value+"爱你破烂的衣裳";
          },
          set(newValue) {
            value = newValue;
            //触发更新
            trigger();
          },
        };
      });
    }
    const myCustomValue = myCustomRef("奈落");
    function changeCustomRef() {
      myCustomValue.value = "米勒法师";
      console.log(myCustomValue.value);
    }

    return {
      valueRef,
      changeRef,
      valueShallowRef,
      changeShallowRef,
      changeShallowRef2,
      changeTriggerRef,
      myCustomValue,
      changeCustomRef,
    };
  },
};
</script>

相关文章

  • Vue3 Ref 与 Reactive的区别

    Vue3 在组件中使用ref()或reactive()都可以创建响应式数据 Vue2 中操作 Vue3 ref r...

  • Vue3入门到精通-setup

    传送门 Vue3入门到精通 --ref 以及 ref相关函数[https://www.jianshu.com/p/...

  • vue3与react、 react hooks

    一、Vue3新特性:setup、ref、reactive、computed、watch、watchEffect函数...

  • Vue3中可在setup 内使用的 api

    Vue3 新增了许多新的api。例如:ref, reactive, readonly, toRef,toRefs。...

  • vue3 使用$ref

    vue3 使用 $ref ,不是那个$refs 这个当前还是实验性api 主要是解决ref修改值需要.value...

  • Vue3之ref()理解

    准备转Vue3, 看文档和一些文章时,看到ref(), 结合最近在用的Proxy,得出的结论就是: ref()实际...

  • Vue3 watch监听 ref数组

    在Vue3中使用数组作为响应式数据,有两种方式,用ref包裹,或用reactivewatch监听 ref 定义的数...

  • vue3学习

    一、基础语法 1、双向数据绑定 vue2 vue3 2、ref, reactive ref:一般用在定义基本类型和...

  • Layout Vue 3 TypeScript版本

    本示例中,可以了解vue3中ref,watch的使用。 layout content header footer ...

  • 何时使用ref?何时使用reactive?

    一般情况下vue3有两种定义模板数据的方式ref和reactive,但是何时使用ref?何时使用reactive?...

网友评论

      本文标题:vue3的ref

      本文链接:https://www.haomeiwen.com/subject/jysfbrtx.html