Vue.js 3在方法内带有ref的输入上使用自动聚焦

2022-04-07 00:00:00 focus vue.js vuejs3 vue-composition-api

我使用的是Vue2,但我最近尝试了Vue 3。

我有一个简单的问题:

 <input ref="myinput" />
 <button @click="submitData" />
我要在函数&submitData";内部将";焦点";设置在";myinput";上。 在Vue 2中很简单(这个.$refs...),但在Vue 3中,他们把它变得复杂了。 我看到了";Setup";的示例,但对我没用,因为我认为您只能从元素访问";Value&Quot;。

有没有办法在方法内部的元素上执行&Quot;Focus&Quot;on?


解决方案

您仍然可以使用Vue 3执行相同的操作,但如果您使用Compostion API,则会有所不同:

选项接口:

数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">
const {
  createApp
} = Vue;
const App = {

  data() {
    return {

    }
  },
  methods: {
    submitData() {
      this.$refs.myinput.focus()
    }
  },
  mounted() {

  }
}
const app = createApp(App)
app.mount('#app')
<script src="https://unpkg.com/vue@3.0.0-rc.11/dist/vue.global.prod.js"></script>

<div id="app">
  Vue 3 app
  <input ref="myinput" />
  <button @click="submitData">
  Submit
  </button>
</div>

组合接口:

数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">
const {
  createApp,
  ref,
  onMounted,

} = Vue;
const App = {

  setup() {
    const myinput = ref(null)

    function submitData() {
      myinput.value.focus()
    }

    return {
      myinput,
      submitData
    }
  }
}
const app = createApp(App)
app.mount('#app')
<script src="https://unpkg.com/vue@3.0.0-rc.11/dist/vue.global.prod.js"></script>

<div id="app">
  Vue 3 app
  <input ref="myinput" />
  <button @click="submitData">
  Submit
  </button>
</div>

相关文章