Vue3和element plus 中ref用法元素实例操作

在 vue3 中,组件的逻辑可以放在 setup 函数里面,但是 setup 中不再有 this,所以 vue2 中的 this.$refs 的用法在 vue3 中无法使用。

用法是:
element中(注意定义的ref 一定要在return 中加上,在方法中调用才能操作dom实例)
代码:

<template>
 <div>
   <el-input class="editInput"
             ref="editNameRef"
             v-model="name"
             @keyup.enter="inputVal"></el-input>
   </div>
</template>
<script>
import { defineComponent, getCurrentInstance, reactive, toRefs, watch, ref } from 'vue'
export default defineComponent({
 setup (props) {
    const { proxy } = getCurrentInstance()
    const editNameRef = ref(null)
    
    const data = reactive({ 
    	name:''
    })
    
    const inputVal=()=>{
    console.log(editNameRef.value)
	}
	
    return {
      ...toRefs(data),
      editNameRef,
      inputVal
    }
})
</script>

2、简单的用法给元素添加 ref 属性。
在 setup 中声明proxy变量。
在 onMounted 生命周期中访问 ref 属性,既是元素实例。
如果操作DOM多的话也可以用上面写的方法。
代码

<p class="slogan" ref="sloan">「让创意动起来 世界在你手中」</p>
const { proxy } = getCurrentInstance()
onMounted(() => {
      console.log(proxy.$refs.slogan)
      //设置字体颜色为红色
       proxy.$refs.slogan.style.color = "red"
    })

输出

<p class="slogan" data-v-22f9f125="">「让创意动起来 世界在你手中」</p>

3、还有一种就是原生

document.getElementById('video')
document.getElementsByClassName('slogan')
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3和Element Plus可以很方便地实现动态表单。下面是一个简单的示例代码: ``` <template> <form @submit.prevent="submitForm"> <el-form :model="formData" :rules="formRules" ref="form"> <el-form-item v-for="(field, index) in formFields" :key="index" :label="field.label" :prop="field.name"> <template v-if="field.type === 'text'"> <el-input v-model="formData[field.name]" :placeholder="field.placeholder"></el-input> </template> <template v-else-if="field.type === 'select'"> <el-select v-model="formData[field.name]" placeholder="请选择"> <el-option v-for="option in field.options" :key="option.value" :label="option.label" :value="option.value"></el-option> </el-select> </template> <!-- 其他表单项类型 --> </el-form-item> </el-form> <el-button type="primary" native-type="submit">提交</el-button> </form> </template> <script> import { ref } from 'vue' import { ElForm, ElFormItem, ElInput, ElSelect, ElOption, ElButton } from 'element-plus' export default { components: { ElForm, ElFormItem, ElInput, ElSelect, ElOption, ElButton }, setup() { const formData = ref({}) const formFields = [ { type: 'text', name: 'username', label: '用户名', placeholder: '请输入用户名' }, { type: 'select', name: 'gender', label: '性别', options: [ { value: 'male', label: '男' }, { value: 'female', label: '女' } ]}, // 其他表单项数据 ] const formRules = ref({}) formFields.forEach(field => { formData.value[field.name] = '' formRules.value[field.name] = { required: true, message: '请输入' + field.label, trigger: 'blur' } }) const submitForm = () => { // 表单验证 const form = this.$refs.form form.validate(valid => { if (valid) { // 获取表单数据 const data = JSON.stringify(formData.value) // 处理表单数据 // ... } else { return false } }) } return { formData, formFields, formRules, submitForm } } } </script> ``` 在上面的代码,我们使用Element Plus的表单组件来生成表单项。在Vue3,我们使用了`ref`来获取表单实例,以便进行表单验证。在`setup`函数初始化了表单数据和表单验证规则,并定义了表单提交的方法。在表单提交时,我们先进行表单验证,通过后再获取表单数据并进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值