zoukankan      html  css  js  c++  java
  • Vue3类型判断和ref的两个作用

    1.类型判断的四种方法

    isRef: 检查一个值是否为一个ref对象
    isReactive:检查一个对象是否是由 reactive 创建的响应式代理
    isReadonly: 检查一个对象是否是由 readonly 创建的只读代理
    isProxy: 检查个对象是否是由 reactive 或者  readonly 方法创建的代理
    
    <template>
     <div>
        <div>
          <div>age:{{age}}</div>
           <button @click="func1">按钮</button>
        </div>
     </div>
    </template>
    <script>
    import {ref,isRef,reactive,
            isReactive,readonly,
            isReadonly, isProxy
            } from 'vue'
    export default {
      name: 'App',
      setup(){
        let age=ref(10);
        function func1(){
    
          // isRef: 检查一个值是否为一个ref对象
          console.log(isRef(age));//true
    
          // isReactive:检查一个对象是否是由 reactive 创建的响应式代理
          console.log(isReactive(reactive({age:10,name:'张三'})));//true
    
          // 检查一个对象是否是由 readonly 创建的只读代理
          console.log(isReadonly(readonly({})));//true
    
          // 检查个对象是否是由 reactive 或者  readonly 方法创建的代理
          console.log(isProxy(reactive({})));//true
          console.log(isProxy(readonly({})));//true
    
        }
        return {age,func1}
    },
    }
    </script>
    

    2 ref监听数据的变化

    使用ref函数,
    去使用监听某一个变量的变化,
    并且把它渲染到视图上.视图发生变化
    
    <template>
     <div>
        <div>
          <div>objState:{{objState}}</div>
           <button @click="func1">按钮</button>
        </div>
     </div>
    </template>
    <script>
    import {ref} from 'vue'
    export default {
      name: 'App',
      setup(){
        let objState=ref({
          name:'张三',
          age:10
        });
       
        function func1(){
          objState.value.name='变成李四';
          objState.value.age=14
          console.log(objState)
        }
        return {objState,func1}
    },
    }
    </script>
    

    01.gif

    3. ref获取页面中的元素

    <template>
      <div>
        <h2>input框自动聚焦</h2>
        <input ref="htmlinput" type="text" />
      </div>
    </template>
    <script>
    import { ref,onMounted } from "vue";
    export default {
      name: "App",
      setup() {
        let htmlinput=ref();
        
        //页面渲染完成
        onMounted(() => {
      
          <!-- if(htmlinput.value){
            // 获取input元素
            console.log( htmlinput.value  )
            // 让input自动去聚焦
            htmlinput.value.focus();
          } -->
    
          htmlinput.value&& htmlinput.value.focus();
          
        })
        return {htmlinput}
      },
    };
    </script>
    
    作者:明月人倚楼
    出处:https://www.cnblogs.com/IwishIcould/

    想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,或者关注博主,在此感谢!

    万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主(っ•̀ω•́)っ✎⁾⁾!

    想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!

    支付宝
    微信
    本文版权归作者所有,欢迎转载,未经作者同意须保留此段声明,在文章页面明显位置给出原文连接
    如果文中有什么错误,欢迎指出。以免更多的人被误导。
  • 相关阅读:
    你所不知道的setTimeout
    SecureCRT8.1下载+注册机+破解教程
    jQuery学习
    GIt学习
    多进程
    Linux下的压缩(zip)解压(unzip)缩命令
    三次握手四次挥手
    django常见问题
    form和modelform
    文件上传
  • 原文地址:https://www.cnblogs.com/IwishIcould/p/15034313.html
Copyright © 2011-2022 走看看