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

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

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

export default {
name:'App',
setup(){
let state = ref([]);
fetch('../public/data.json')
.then((res)=>{
return res.json()
})
.then((data)=>{
state.value = data;
})
.catch((err)=>{
console.log(err);
})
return {state};
}
}

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

export default {
name:'App',
// 自定义ref 获取数据
myRef(value){ fetch(value)
.then((res)=>{
return res.json()
})
.then((data)=>{
state.value = data;
trigger() // 获取成功更新UI界面
})
.catch((err)=>{
console.log(err);
}) return customRef((track,trigger)=>{
return {
get(){
track();
return value;
},
ste(newValue){
value = newValue
trigger()
return value
}
}
})
},
setup(){
let state = this.myRef('../public/data.json');
return {state};
}
}

提取界面的DOM元素:

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

最新文章

  1. EF多对多更新报错(TableNoTracking引发的bug)
  2. Mui沉浸模式以及状态栏颜色改变
  3. Power BI FAQ
  4. inline-block 兼容性
  5. Protobuf - 使用scons编译proto文件
  6. 详解SESSION与COOKIE的区别
  7. myeclipse破解
  8. 关于CGContextSetBlendMode: invalid context 0x0的错误
  9. HTML中Meta属性http-equiv=&quot;X-UA-Compatible&quot;详解
  10. oracle查看最大长度
  11. 【转】iOS开发:开发证书知识点总结
  12. 安卓之cannot convert from Fragment1 to Fragment
  13. JS数组循环的性能和效率分析(for、while、forEach、map、for of)
  14. SpringMVC 全局异常处理
  15. WYSIWYG WebBuilder 所见即所得工具
  16. JS中多维数组的深拷贝的多种实现方式
  17. 【UI测试】--多窗口&系统资源
  18. Linux - awk 文本处理工具一
  19. 用make编译openCV报错:ts_gtest.cpp:(.text._ZN7testing8internal2RED2Ev+0xf): undefined reference to &#39;regfreeA&#39;
  20. AngularJS中ng-class使用方法

热门文章

  1. Eclipse带参数调试的方法
  2. Using Evernote with Wine on Mint
  3. Spring学习03(Bean的自动装配)
  4. Linux中的账号权限管理
  5. 课程设计- 基于ssm的捐赠物资分配管理系统 &amp;&amp; 基于java的申请救援管理系统
  6. miniFTP项目集合
  7. Android手机QQ的UI自动化实践
  8. ☕【Java技术指南】「OpenJDK专题」想不想编译属于你自己的JDK呢?(Windows10环境)
  9. JavaWeb学习笔记(五)
  10. 上传jar包到nexus