vue3怎样获取绑定页面dom元素
和vue2一样,vue3也可以在页面上通过ref绑定一个变量,<div ref="domRef"></div>但vue2使用this.$refs可以获取绑定的变量,而vue3虽然已经删除了this,但可以用以下方法绑定元素在setup方法中使用vue提供的ref绑定元素,网上大部分是使用import { onMounted, ref } from "vue-demi";ex
·
和vue2一样,vue3也可以在页面上通过ref绑定一个变量,
<div ref="domRef"></div>
但vue2使用this.$refs可以获取绑定的变量,而vue3虽然已经删除了this,但可以用以下方法绑定元素
在setup方法中使用vue提供的ref绑定元素,网上大部分是使用
import { onMounted, ref } from "vue";
export default{
setup() {
const domRef = ref(null)
onMounted(() => {
console.log(domRef.value)
})
retrurn {
domRef
}
}
}
其实这还有优化的空间,我们使用vue3比较重要的是使用ts语法,那么怎么指定ref绑定的dom的class对象呢,我们可以不用在ref中写null,在ref中指定某个类的原型,那么value就是这个类的对象,我们可以使用js本身就有的Element对象,也可以自定义一个,最终代码如下所示:
①Ele.ts文件,用于声明class类局部使用,也可以使用.d.ts文件直接全局声明
export default class Ele {
// eslint-disable-next-line @typescript-eslint/no-empty-function
constructor() {}
clientHeight!: number;
clientWidth!: number;
style!: {
top: number | string;
left: number | string;
bottom: number | string;
right: number | string;
display: "inline-block" | "none";
};
}
②通过Ele绑定ref
import { onMounted, ref } from "vue";
import Ele from "@/class/Ele";
export default{
setup() {
const domRef = ref(Ele.prototype)
onMounted(() => {
const dom: Ele = domRef.value;
console.log(dom)
})
retrurn {
domRef
}
}
}
更多推荐
已为社区贡献3条内容
所有评论(0)