customRef() 自定义Ref函数实现Ref()的相关功能

  1. 1 <script>
  2. 2 import { ref customRef} from 'vue'
  3. 3
  4. 4 function myRef(value){
  5. 5 return customRef((track,trigger)=>{
  6. 6 return {
  7. 7 get(){
  8. 8 track() // 告诉Vue这个数据是需要追踪变化的
  9. 9 return value
  10. 10 }
  11. 11 set(newValue){
  12. 12 value = newValue;
  13. 13 trigger(); // 告诉Vue触发界面更新
  14. 14 }
  15. 15 }
  16. 16 })
  17. 17
  18. 18
  19. 19 }
  20. 20
  21. 21 setup(){
  22. 22
  23. 23 let age = myRef(18);
  24. 24 function myFn(){
  25. 25 age.value +=1;
  26. 26 }
  27. 27 return {age,myFn}
  28. 28 }
  29. 29 </script>
  30. 30 通过customRef() 实现自定义ref()的功能。

由于setup函数只能够是同步的,因此在setup函数中获取数据需要逐步回调。

  1. export default {
  2. name:'App',
  3. setup(){
  4. let state = ref([]);
  5. fetch('../public/data.json')
  6. .then((res)=>{
  7. return res.json()
  8. })
  9. .then((data)=>{
  10. state.value = data;
  11. })
  12. .catch((err)=>{
  13. console.log(err);
  14. })
  15. return {state};
  16. }
  17. }

因此通过自定义ref() 可以实现获取数据的代码分离更好维护的目的。

  1. export default {
  2. name:'App',
  3. // 自定义ref 获取数据
  4. myRef(value){
  5.  
  6. fetch(value)
  7. .then((res)=>{
  8. return res.json()
  9. })
  10. .then((data)=>{
  11. state.value = data;
  12. trigger() // 获取成功更新UI界面
  13. })
  14. .catch((err)=>{
  15. console.log(err);
  16. })
  17.  
  18. return customRef((track,trigger)=>{
  19. return {
  20. get(){
  21. track();
  22. return value;
  23. },
  24. ste(newValue){
  25. value = newValue
  26. trigger()
  27. return value
  28. }
  29. }
  30. })
  31. },
  32. setup(){
  33. let state = this.myRef('../public/data.json');
  34. return {state};
  35. }
  36. }

提取界面的DOM元素:

在setup函数中调用生命周期函数,就可以获取通过ref获取界面中DOM结点元素的值。

Vue3的其他属性和API函数的更多相关文章

  1. Windows API 函数列表 附帮助手册

    所有Windows API函数列表,为了方便查询,也为了大家查找,所以整理一下贡献出来了. 帮助手册:700多个Windows API的函数手册 免费下载 API之网络函数 API之消息函数 API之 ...

  2. C#中可直接调用WIN32的API函数--USER32.DLL

    Win32的API函数可以直接在C#中直接调用,在做WinForm时还是很有帮助的.有时候直接调用Win32的API,可以很高效的实现想要的效果. using System; using System ...

  3. Appium常用的API函数

    在学习应用一个框架之前,应该了解一下这个框架的整体结构或是相应的API函数.这篇文章还不错:http://blog.sina.com.cn/s/blog_68f262210102vzf9.html,就 ...

  4. mfc 调用Windows的API函数实现同步异步串口通信(源码)

    在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信.串口通信方便易行,应用广泛. 一般情况下,工控机和各智能仪表通过RS485总线进行通信.RS485的通信方式是半 ...

  5. C#调用Windows API函数截图

    界面如下: 下面放了一个PictureBox 首先是声明函数: //这里是调用 Windows API函数来进行截图 //首先导入库文件 [System.Runtime.InteropServices ...

  6. C#中导入Win32 API函数

    C#中导入Win32 API的方法: 1.引用命名空间 using System.Net.Security; using System.Runtime.InteropServices; 2. [Dll ...

  7. 初识API函数

    我之前是一个只会编写数值计算的程序的OIer,但我并不甘于这种现状,于是我编写了我的第一个使用API函数的C++程序,开发平台是VS2012: // ConsoleApplication.cpp : ...

  8. Linux 编程中的API函数和系统调用的关系【转】

    转自:http://blog.chinaunix.net/uid-25968088-id-3426027.html 原文地址:Linux 编程中的API函数和系统调用的关系 作者:up哥小号 API: ...

  9. [转]SQLITE3 C语言接口 API 函数简介

    SQLITE3 C语言接口 API 函数简介 说明:本说明文档属作者从接触 SQLite 开始认识的 API 函数的使用方法, 由本人翻译, 不断更新. /* 2012-05-25 */ int sq ...

随机推荐

  1. 以命令行方式使用Desktop版Ubuntu

    方法1:安装Ubuntu Server版,好处是默认不安装GUI,且可以自动安装ssh服务和其他很多服务,且消耗系统资源少(约200MB内存,Desktop版启动后需要500MB左右内存),启动和关闭 ...

  2. Eclipse的XML编辑器解决方案

    现在使用的Eclipse SDK 3.7.2里没有XML编辑器,无法进行语法高亮,也没有格式化(按层次控制缩进量)和设计视图,很不方便.对于ant文件,可以用Ant Editor来打开,ivy文件在装 ...

  3. 【笔记】F1 score

    F1 score 关于精准率和召回率 精准率和召回率可以很好的评价对于数据极度偏斜的二分类问题的算法,有个问题,毕竟是两个指标,有的时候这两个指标也会产生差异,对于不同的算法,精准率可能高一些,召回率 ...

  4. node后台生成echarts图表

    1 //2,生成图片数据 2 var option = { 3 tooltip: { 4 trigger: 'item', 5 formatter: "{a} <br/>{b} ...

  5. uwp 的锁屏功能

    [UWP开发]自定义锁屏&桌面壁纸 mtobeiyf关注 2015.11.01 00:16:55字数 394阅读 1,249 调用通用的API来设置桌面壁纸,可以实现很多有趣的功能.在Wind ...

  6. css - rem和vw

    css - rem和vw 物理像素 物理像素在不同的设备中1px里可以容纳的像素颗粒是不相同的,所以1px这个单位其实也是有N个像素颗粒填充的.同一尺寸屏幕的每个像素点所能容纳的像素颗粒越多显示效果越 ...

  7. 设计模式<一>

    设计原则1.找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起. 2.针对接口编程,而不是针对实现编程. 3.多用组合,少用继承. 一:策略模式,定义了算法族,分别封装起来 ...

  8. Python - 面向对象编程 - @property

    前言 前面讲到实例属性的时候,我们可以通过 实例对象.实例属性 来访问对应的实例属性 但这种做法是不建议的,因为它破坏了类的封装原则 正常情况下,实例属性应该是隐藏的,只允许通过类提供的方法来间接实现 ...

  9. ES6——类表达式

    //类表达式 const Person1 = class{ constructor(){ console.log('aa') } } //也可以跟上类名P,但是变量P在class外部是访问不到的,在c ...

  10. JavaSE基础之Java中的数据类型

    基本数据类型:8个 整数类型(4):byte short int long 浮点类型(2):float double 字符类型:char 布尔类型:boolean 引用数据类型:3个 数组 类:cla ...