Vue3中通过ref获取dom对象

737 阅读1分钟

Vue3中通过ref获取dom对象

本文主要讨论下Vue3中如何通过ref获取dom对象,这里主要写一下组合式API以及TSX中如何获取.

首先不论何种方法我们都必须要暴露一个ref对象给渲染层,另外渲染层中的ref属性只需要用字面量即可,不要加冒号

组合式API

<template>
<!--注意这里没有冒号-->
<div ref="monacoEditor"></div>
</template>

<script setup lang="ts">
import { onMounted, ref } from 'vue'
import { editor } from 'monaco-editor'
// 请务必写ref
const monacoEditor = ref()
// 注意这里只有onMounted事件后才可以获取
onMounted(() => {
editor.create(monacoEditor.value, {
		value: 'hello world'
	})
})
</script>

TSX

import { defineComponent, onMounted, ref } from 'vue'
import { editor } from 'monaco-editor'

export default defineComponent({
  props: {},
  setup() {
    // 务必写ref
    const monacoEditor = ref()
    onMounted(() => {
      console.log(monacoEditor)
      // 这里获取值要写.value
      editor.create(monacoEditor.value, {
        value: 'hello world'
      })
    })
    // 同理一定要返回,需要暴露给渲染层
    return { monacoEditor }
  },
  render() {
    return (
      <div>
        <!--这里不可以写{}的形式,必须为字符串-->
        <div ref="monacoEditor" style="height:500px"></div>
      </div>
    )
  }
})