weixin_42472886 2023-01-08 04:24 采纳率: 78.6%
浏览 25
已结题

vue里模板引用ref,和响应式ref()有什么区别?

vue里模板引用ref,和响应式ref()有什么区别?虽然都是ref,但一个功能是获取dom,一个使普通数据变成响应式

  • 写回答

1条回答 默认 最新

  • m0_54204465 2023-01-08 07:38
    关注

    Vue.js 中的 ref 修饰符的不同用法。
    在 Vue.js 中,ref 是一个用于获取元素或子组件的引用的修饰符。它可以在模板中使用,也可以在计算属性中使用。

    在模板中使用 ref 修饰符时,它会在组件的 $refs 对象中添加一个条目,其值为对应的 DOM 元素或子组件实例。例如:

    <template>
      <div ref="myDiv">This is a div</div>
    </template>
    
    <script>
    export default {
      mounted() {
        console.log(this.$refs.myDiv) // 输出: <div>This is a div</div>
      }
    }
    </script>
    
    

    使用 ref 修饰符时,可以使用简写语法:

    <template>
      <div ref="myDiv">This is a div</div>
    </template>
    
    <script>
    export default {
      mounted() {
        console.log(this.myDiv) // 输出: <div>This is a div</div>
      }
    }
    </script>
    
    

    另一方面,响应式 ref 是一种用于将普通数据转换为响应式数据的方法。它可以在计算属性中使用,但不能在模板中使用。

    在计算属性中使用响应式 ref 时,可以使用 $refs 对象中的条目作为普通数据的源数据,并使用 Vue.set() 方法将其转换为响应式数据。例如:

    <template>
      <div ref="myDiv">This is a div</div>
    </template>
    
    <script>
    export default {
      computed: {
        myDivData: {
          get() {
            return this.myDivData
          },
          set(value) {
            Vue.set(this, 'myDivData', value)
          }
        }
      },
      mounted() {
        this.myDivData = this.$refs.myDiv
      }
    }
    </script>
    
    

    在上述代码中,我们使用了 ref 修饰符获取了 $refs.myDiv 的值,并使用 Vue.set() 将其转换为响应式数据。这样,当 $refs.myDiv 的值发生变化时,myDivData 的值也会随之更新。

    总的来说,在 Vue.js 中使用 ref 修饰符时,如果是在模板中使用,则用于获取元素或子组件的引用;如果是在计算属性中使用,则用于将普通数据转换为响应式数据。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月10日
  • 已采纳回答 2月2日
  • 创建了问题 1月8日

悬赏问题

  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line