首页 > 其他分享 >vue ref

vue ref

时间:2024-05-06 17:26:48浏览次数:21  
标签:vue name reactive Child 组件 ref

ref

1 vue2 ref属性

  • 也可以实现组件间通信:子和父都可以实现通信

  • ref放在标签上,拿到的是原生的DOM节点

  • ref放在组件上,拿到的是组件对象 ,对象中的数据、函数 都可以直接使用

  • 通过这种方式实现子传父(this.$refs.mychild.text)

  • 通过这种方式实现父传子(调用子组件方法传参数)

1.1 AboutView.vue

<template>
  <div class="about">
    <h1 ref="h1">This is an about page</h1>
    <Child ref="child"></Child>
    <button @click="handleShow">点我看控制台</button>
  </div>
</template>


<script>
import Child from "@/components/Child.vue";
export  default {
  name:'About',
  data(){
    return {
      name:'xxx'
    }
  },
  methods:{
    handleShow(){
      //是在组件中所有标签设置了ref属性的 字典 {mychild:组件对象}
      console.log(this.$refs)
      //拿到组件对象的属性--》在父中,拿到了子的变量--》子传父
       console.log(this.$refs.child.title)
      //修改组件对象的属性--》在父中,修改子的属性--》父传子
      this.$refs.child.title='首页'
      //调用子组件中的函数
      this.$refs.mychild.handleChange
    }
  },
  components:{
    Child
  }
}
</script>

1.2 Child.vue

<template>
  <div>
    <div class="top">
      <button>后退</button>
      <span @click="handleShow">{{ title }}</span>
      <button @click="handlelog">前进</button>
    </div>

  </div>
</template>
<script>
export default {
  name: 'Child',
  data() {
    return {
      title: '首页1'
    }
  },
  methods: {
    handleShow() {
      alert('1111')
    },
    handlelog(){
        //拿到父级组件的对象属性
      console.log(this.$parent.name)
    }
  }
}
</script>

2 vue3 ref 响应式的引用

2.1 ref 和 reactive

  • ref 包裹值类型[数字,字符串,布尔],做成响应式
  • reactive包裹引用类型[对象,数组],做成响应式
  • 使用reactive包裹的对象,直接通过 . [] 取值赋值就是响应式的
  • ref包裹的对象,需要使用 对象.value 修改值
  • 使用ref包裹的,在template中,不许用使用 变量.value
<template>
    <h1>ref</h1>
    <p>爱好是:{{ hobby }}</p>
    <h1>reacitve</h1>
    <p>名字:{{ person.name }}  年龄:{{ person.age }}</p>
    <button @click="handleAddAge">点击年龄+1</button>
</template>

<script setup>
    import {ref,reactive} from 'vue'

    const hobby = ref('篮球')
    const person = reactive({name: 'qc', age: 25})
    const handleAddAge = () => {
        person.age++
    }
</script>

标签:vue,name,reactive,Child,组件,ref
From: https://www.cnblogs.com/unrealqcc/p/18175457

相关文章

  • vue 组件通信
    组件通信1.父传子在全局组件中自定义属性:<Child:myname="qname"></Child>在组件中获取:{{myname}}<divid="app"><h1>组件使用-父传子-自定义属性</h1><Child:myname="qname"></Child></div><script>......
  • vue 生命周期钩子
    生命周期钩子函数描述beforeCreate创建Vue实例之前调用created创建Vue实例成功后调用(可以在此处发送异步请求后端数据)beforeMount渲染DOM之前调用mounted渲染DOM之后调用,这时候可以向后端发送数据了beforeUpdate重新渲染之前调用(数据更新等操作时,控制D......
  • vue 指令
    指令v-text标签内容显示js变量对应的值<divid="box"><spanv-text="a"></span><!--等同于-->{{a}}</div><script>letvm=newVue({el:'#box',data:{a:......
  • vue 计算属性
    计算属性在Vue2中使用computed在Vue2中,计算属性是通过computed选项来定义的。示例中,我们定义了一个fullName计算属性,它会根据firstName和lastName的值计算出完整的姓名。exportdefault{data(){return{firstName:'John',lastName:'......
  • 使用 VS Code 调试 Vue.js 项目
    Vite如果是通过create-vue创建的项目,则修改vite.config.ts配置文件,在开发环境生成sourcemap文件。exportdefaultdefineConfig({build:{sourcemap:true,},//otherconfigs...});更多配置,请参考:https://vitejs.dev/config/build-options.html#build-s......
  • vue实现使用JSZip批量下载图片
    1importJSZipfrom"jszip";2import{saveAs}from'file-saver';3import$from'jquery'45//jszip打包下载图片6functionsaveImgZip(imgUrlArrs,typeTxt){7varimgUrlArr=[];//图片列表8imgUrlArr=imgUrlAr......
  • vue
    vue打包命令:vuerunbuildvue脚手架搭建:npminstall-g@vue/clinpminstall是用来安装项目中所需的所有依赖项的命令总的来说,@vue/cli是VueCLI的工具集,用于全局安装以便在命令行中使用,而@vue/cli-service是VueCLI的一个核心服务模块,用于在项目中执行开发任务。通常......
  • 入门学习Docker部署Vue+NetCore+MsSql
    最近vultr的主机经常忘了续租,导致账号被禁用,主机被删掉每次重新部署都忘了之前怎么弄的,要重新查好多资料每个月6美金的主机XShell连接主机IP先安装docker开启docker服务镜像容器tar文件 saveload dockerimagesdockercommitbuildDockerfilepull仓库 查看......
  • vue3 个人自适应配置方案
    ``使用插件"postcss-pxtorem":"^6.1.0",postcss.config.cjs文件配置module.exports={plugins:{autoprefixer:{overrideBrowserslist:["Android4.1","iOS7.1","Chrome>31......
  • 小伙伴说VuePress太简洁了,还有没有其他博客推荐?
    写在前面自从上一篇文章发出来之后,不少小伙伴开始用VuePress搭建自己的个人网站。如果小伙伴也想用VuePress零代码零成本搭建个人网站,可以看过来传送门......