vue 中 ref的作用 以及其 应用场景

要了解ref的作用,首先应该了解什么是ref 以及他 与 $ref 的区别

vue 官网给出的ref 的定义是这样的

在定义中可以看到 ref 相当于一个注册器,我们可以通过注册的名字个 $refs+ 注册的名字来使用注册的信息

接下来看一下$refs

 

简单来说是一个数组 是一个注册过 ref 属性的 所有dom 元素和组件实例

应用场景1: 指向 添加 ref 的 dom 元素 比如在element ui 中表单验证 就是这样的机制

 

应用场景2:父组件 通过ref 获取子组件来进行操作

以下是官网实例

此种方法更适用于直接访问子组件,如果是操作更改子组件的属性方法,prop 更合适些

刚开始写blog 如果有写错误的地方 欢迎 指正交流!

 

转载于:https://www.cnblogs.com/rookieLee/p/11205145.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue,`ref`是一个特殊的属性,用于给元素或组件注册引用信息。`ref`可以用在以下场景: 1. 获取DOM元素:通过给DOM元素添加`ref`属性,可以在Vue实例通过`$refs`属性访问到这个DOM元素。例如: ```vue <template> <div> <input type="text" ref="input" /> <button @click="focusInput">Focus Input</button> </div> </template> <script> export default { methods: { focusInput() { this.$refs.input.focus(); }, }, }; </script> ``` 在上述代码,我们给`input`元素添加了`ref="input"`属性,然后在`focusInput`方法通过`this.$refs.input`访问到这个DOM元素,并调用了它的`focus`方法,使得输入框获取焦点。 2. 访问子组件:通过给子组件添加`ref`属性,可以在父组件访问到这个子组件实例。例如: ```vue <template> <div> <child-component ref="child"></child-component> <button @click="changeChildText">Change Child Text</button> </div> </template> <script> import ChildComponent from "@/components/ChildComponent.vue"; export default { components: { ChildComponent, }, methods: { changeChildText() { this.$refs.child.changeText("New Text"); }, }, }; </script> ``` 在上述代码,我们给`child-component`组件添加了`ref="child"`属性,然后在父组件通过`this.$refs.child`访问到这个子组件实例,并调用了它的`changeText`方法,修改了子组件的文本内容。 3. 访问动态组件:通过给动态组件添加`ref`属性,可以在父组件访问到这个动态组件实例。例如: ```vue <template> <div> <component :is="currentComponent" ref="component"></component> <button @click="changeComponent">Change Component</button> </div> </template> <script> import ComponentA from "@/components/ComponentA.vue"; import ComponentB from "@/components/ComponentB.vue"; export default { components: { ComponentA, ComponentB, }, data() { return { currentComponent: "ComponentA", }; }, methods: { changeComponent() { this.currentComponent = this.currentComponent === "ComponentA" ? "ComponentB" : "ComponentA"; this.$refs.component.doSomething(); }, }, }; </script> ``` 在上述代码,我们通过`<component>`标签动态渲染了两个组件`ComponentA`和`ComponentB`,并给它们添加了`ref="component"`属性。然后在父组件通过`this.$refs.component`访问到当前动态组件实例,并调用了它的`doSomething`方法,执行一些操作。 总之,`ref`可以用于访问DOM元素、子组件和动态组件等情况,但是过多使用`ref`可能会导致代码难以维护,应该谨慎使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值