在 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')
GitHub 加速计划 / eleme / element
10
1
下载
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:4 个月前 )
c345bb45 8 个月前
a07f3a59 * Update transition.md * Update table.md * Update transition.md * Update table.md * Update transition.md * Update table.md * Update table.md * Update transition.md * Update popover.md 8 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐