Vue3的其他属性和API函数

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结点元素的值。

posted @ 2021-01-11 21:14  TangTaue  阅读(336)  评论(0编辑  收藏  举报