vue3 父组件使用ref获取获取子组件的属性方法

在vue3中父组件访问子组件中的属性和方法是需要借助于ref:

1.<script setup> 中定义响应式变量 例如: const demo1 = ref(null)

2.在引入的子组件标签上绑定ref属性的值与定义的响应式变量同名( <demo1 ref="demo1"/>)。

父组件代码如下:

javascript 复制代码
<template>
  <demo1 ref="demo1"/>
  <demo2 ref="demo2"/>
  <demo3 ref="demo3"/>
</template>
<script setup>
import Demo1 from '@/components/demo1.vue'
import Demo2 from '@/components/demo2.vue'
import Demo3 from '@/components/demo3.vue'
import {ref,onMounted} from 'vue'

const demo1 = ref(null)
const demo2 = ref(null)
const demo3 = ref(null)
onMounted(()=> {
  console.log(demo1.value.count,'demo1子组件')
  console.log(demo2.value?.a,'demo2子组件')
  console.log(demo3.value.list[0],"demo3子组件")
})
</script>

子组件代码如下:

demo1.vue
javascript 复制代码
<template>
  <h1>i'm demo1 content{{count}}</h1>
</template>

<script >
import {ref} from 'vue'
export default {
    setup () {
        const count = ref(999)
        return {
            count
        }
    }
}

此时父组件可以获取到子组件的count属性

demo2
javascript 复制代码
<template>
  <h1>我是demo2</h1>
</template>

<script setup>
import {defineExpose,ref} from 'vue'
const a = ref('helloss')
</script>

当使用 <script setup> 写法会导致父组件无法访问到子组件中的属性和方法。

使用 <script setup> 的组件,想要让父组件访问到它的属性和方法需要借助与defineExpose来指定需要暴露给父组件的属性。

更改后的demo2组件
javascript 复制代码
<template>
  <h1>我是demo2</h1>
</template>

<script setup>
import {defineExpose,ref} from 'vue'
const a = ref('helloss')
defineExpose({
    a
})
</script>
demo3
javascript 复制代码
<template>
  <h1>我是demo3</h1>
</template>

<script>
export default {
  data () {
    return {
        list:['a','b','c']
    }
  },
  methods: {
    btn () { 
    }
  }
}

这种方式,父组件可以正常获取到里面的属性和方法。

相关推荐
爱滑雪的码农41 分钟前
详细说说React大型项目结构以及日常开发核心语法
前端·javascript·react.js
七牛开发者1 小时前
HTML is the new Markdown:来自 Claude Code 团队的实践
前端·人工智能·语言模型·html
@大迁世界2 小时前
43.HTML 事件处理和 React 事件处理有什么区别?
前端·javascript·react.js·html·ecmascript
CloneCello2 小时前
AI时代程序员认知调整指南
前端
ZC跨境爬虫2 小时前
跟着 MDN 学 HTML day_38:(DocumentFragment 文档片段接口详解)
前端·javascript·ui·html·音视频
@大迁世界3 小时前
41.ShadCN 是什么?它如何和 Tailwind CSS 集成,从而更容易构建可访问且可自定义的 React 组件?
前端·javascript·css·react.js·前端框架
千叶风行4 小时前
Text-to-SQL 技术设计与注意事项
前端·人工智能·后端
软件开发技术深度爱好者4 小时前
HTML5+JavaScript读取DOCX 文档完整内容
前端·html5
幽络源小助理4 小时前
苹果CMS V10 MXPro V4.5模版下载, 自适应视频主题源码, 幽络源源码
前端·开源·源码·php源码
kyriewen5 小时前
坏了,黑客学会用AI写外挂了
前端·程序员·ai编程