Vue3 + Vite + Ts 关于ref和v-model对应的字段的感悟

问题发现:

有这么一段代码

<input
   type="text"
   class="newAdress"
   ref="newAdress"
   placeholder="请输入地址"
   v-model="newAdress"
/>

ref 和 v-model 对应的字段名称都一样(前提:newAdress 的值为空(不为空也不影响))

如果运行后会发现,输入框的内容显示变成:[object HTMLInputElement]

浏览器打印字段 newAdress 发现值变成了 input 的dom节点了。如下图

那么是不是获取元素dom的方式,除了通过 ctx.$ref 或 proxy.$ref 来获取dom元素了,还可以通过绑定变更了名来获取 dom ?。 

 实践

html

<input
  type="text"
  class="newAdress"
  ref="newAdressRef"
  placeholder="请输入地址"
  v-model="newAdress"
/>

js:

<script setup lang="ts">
import { ref, provide, reactive } from "@vue/reactivity";
import { onMounted } from "vue";
const newAdress = ref("")
const newAdressRef = ref("")
</script>

 对元素 Dom 操作前:

 

  对元素 Dom 操作:

在onMounted中添加一句 newAdressRef.value.style.background = "red";

<script setup lang="ts">
import { ref, provide, reactive } from "@vue/reactivity";
import { onMounted } from "vue";
const newAdress = ref("")
const newAdressRef = ref("")
onMounted(() => {
  newAdressRef.value.style.background = "red";
});
</script>

结果 

由此可见是可行的。

最后:

开发是为了项目上线运行,所以打包,看看不会对打包后有影响。上线。ok

 由此可见是该方法是可行的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值