首页 > 其他分享 >vue3通过ref获取元素及注意事项

vue3通过ref获取元素及注意事项

时间:2022-11-28 10:56:27浏览次数:45  
标签:... vue3 onMounted reactive state searchInputElem 注意事项 ref

常规用法

<template>
    <div class="search-input">
        <input type="text" ref="searchInputElem" v-model="searchValue" @keyup.enter="onSearch" placeholder="输入关键词" />    <!-- 【step1】dom层定义ref="searchInputElem" -->
    </div>
</template>

<script>
import { onMounted, reactive, toRefs, ref } from "vue";
export default {
    setup() {
        const state = reactive({
            searchValue: ""
        });

        function onSearch(){ ... }

        const searchInputElem = ref(null)  //【step2】定义searchInputElem 【注意】:这里定义的searchInputElem必须和dom层里定义的ref="searchInputElem"保持一致
        onMounted(()=>{
            console.log(searchInputElem.value)  //【step4】:获取元素,注意需要在元素加载出来后才能获取,比如可在onMounted生命周期或者nextTick中使用
            searchInputElem.value.focus()
        })

        return {
            onSearch,
            searchInputElem,  // 【step3】注意:必须return出来
            ...toRefs(state),
        };
    },
};
</script>

基于自己代码风格的写法

<template>
    <div class="search-input">
        <input type="text" ref="searchInputElem" v-model="searchValue" @keyup.enter="onSearch" placeholder="输入关键词" />    <!-- 【step1】dom层定义ref="searchInputElem" -->
    </div>
</template>

<script>
import { onMounted, reactive, toRefs, ref } from "vue";
export default {
    setup() {
        const state = reactive({
            searchValue: "",
            searchInputElem: null  //【step2】定义searchInputElem 【注意】:这里定义的searchInputElem必须和dom层里定义的ref="searchInputElem"保持一致
        });

        function onSearch(){ ... }

        onMounted(()=>{
            console.log(state.searchInputElem)  //【step4】:获取元素,注意需要在元素加载出来后才能获取,比如可在onMounted生命周期或者nextTick中使用
            state.searchInputElem.focus()
        })

        return {
            onSearch,
            ...toRefs(state),  // 【step3】注意:必须return出来
        };
    },
};
</script>

标签:...,vue3,onMounted,reactive,state,searchInputElem,注意事项,ref
From: https://www.cnblogs.com/huihuihero/p/16931598.html

相关文章

  • -webkit-box-orient:vertical 编译报错之autoprefixer问题
    由于各大浏览器的兼容问题,autoprefixer插件就可以帮我们自动补齐前缀。它和less、scss这样的预处理器不同,它属于后置处理器。预处理器:在打包之前进行处理后置处......
  • 安卓中 选择器属性的使用,注意事项
       处理android:state_activity同一个界面出现需要同时选择两个焦点的时候,用到我们在定义一个drawable的时候可以通过xml定义的drawable对象。它使得一个图片能在不同......
  • js框架:vue3
    一个前端网页有:HTML,js,css三个部分主组成,高级一点的动态页就外加后台代码。vue:是JavaScript封装起来的框架【js---》jQuery---》vue框架】,js就JavaScript的简写,其框架作用就......
  • Bootstrap_栅格系统_注意事项与Bootstrap_全局CSS样式_按钮&图片
    Bootstrap_栅格系统_注意事项栅格系统_注意事项:1.一行中如果格子数目超过12,则超出部分自动换行......
  • AfterEffects 2022-11-26
    作业,发帖次数。AI智能新建合成,16秒。导入图片,不需要导入序列。因为每张图片,都需要做关键帧。不操作的图片,防止误点,可以锁定。操作的图片show出来,不操作的隐藏起来。 ......
  • vue3中watch监听不是你想的那样简单
    vue3中watch监听数组,数组变化后未触发回调今天发生了一个很神奇的现象,就是我使用watch监听数组时。被监听的数组已经发生了变化。但是没有触发回调操作。当时的我感到很疑......
  • vue3中watch监听不是你想的那样简单
    vue3中watch监听数组,数组变化后未触发回调今天发生了一个很神奇的现象,就是我使用watch监听数组时。被监听的数组已经发生了变化。但是没有触发回调操作。当时的我感到很疑......
  • Bootstrap栅格系统_入门以及注意事项
    Bootstrap栅格系统_入门响应式布局:同一套页面可以兼容不同分辨率的设备实现:依赖于栅格系统:将一行平均分成12个格子,可以指定元素占几个格子步骤:1.......
  • vue3踩坑记录
    VueGridLayout-️适用Vue.js的栅格布局系统'.sync'modifieron'v-bind'directiveisdeprecated.Use'v-model:propName'instead.eslint-plugin-vue在3.x中,自......
  • IE和FireFox中的event事件
    最近在项目中碰到这样一个问题,表单提交,是用javascript控制的,当用户回车时就代表提交,同事在网上搜了一段代码放进去,在IE下是正常的,但我在用FF查看时,发现提交无效,用Fi......