美文网首页
Vue3中ref的使用

Vue3中ref的使用

作者: 小俊的世界 | 来源:发表于2021-06-29 14:46 被阅读0次

    引言

    使用ElForm进行表单的验证时,之前在vue2中,则是采用的是this.$refs['form'].validate,但是在vue3 的setup中是没有办法直接使用this,如何进行解决?

    使用ref变量

     <el-form
            ref="formRef"
            :model="form"
            :rules="rules"
            label-position="center"
            size="small"
            label-width="100px"
          >
         ...
    </el-form>
    
    setup(){
       const formRef = ref(null);
       const save = () => {
            (formRef.value as any)?.validate((valid) => {
              if (valid) {
                 console.log('验证通过')
              }
            });
          };
      return {
         formRef,
         save
      }
    }
    
    

    需要注意的是,ref前面是没有:,而ref是一个变量的,这个是有些反直觉的。

    使用 getCurrentInstance

      import {  getCurrentInstance } from 'vue';
      setup(){
         const instance = getCurrentInstance()
         const save = () => {
            (instance?.refs['formRef'] as any)?.validate((valid) => {
              if (valid) {
                 console.log('验证通过')
              }
            });
         }
      }
    

    需要注意的是 getCurrentInstance是有使用的限制的,如果是直接在方法中书写是直接拿不到值的,比如下面这种写法,直接放在了save方法中,是不行的

     import {  getCurrentInstance } from 'vue';
      setup(){
         
         const save = () => {
            const instance = getCurrentInstance() // 获取不到当前上下文 
            (instance?.refs['formRef'] as any)?.validate((valid) => {
              if (valid) {
                 console.log('验证通过')
              }
            });
         }
      }
    

    总结

    在vue3的setup中可以使用ref变量的方式或者getCurrentInstance两种方式来使用Ref,从使用方便的程度上来看,更加推荐使用ref变量的方式。

    相关文章

      网友评论

          本文标题:Vue3中ref的使用

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