首页 > 其他分享 >关于vue3使用setup语法糖获取不到组件实例内部的变量

关于vue3使用setup语法糖获取不到组件实例内部的变量

时间:2023-07-20 14:34:15浏览次数:40  
标签:count setup child 实例 vue3 组件 import ref

// 子组件
<template>
  <div>{{count}}</div>
<template

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

  const count = ref(0)
</script>
// 父组件
<template>
  <div>
    <Child ref="child" />
  </div>
<template

<script setup>
import { ref } from 'vue'
import Child from './child'

const child = ref()

onMounted(() => {
  // 此时打印为undefined
  console.log(child.value.count)
})
</script>

问题:如上述代码打印父组件通过获取组件实例child.value.count为undefined
原因: vue3使用 <script setup> 的组件是默认关闭的——即通过模板引用或者 $parent 链获取到的组件的公开实例,不会暴露任何在 <script setup> 中声明的绑定。

解决办法: 可以通过 defineExpose 编译器宏来显式指定在 <script setup> 组件中要暴露出去的属性:如图

// 子组件
<template>
  <div>{{count}}</div>
<template

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

  const count = ref(0)
defineExpose({ count }) </script>

附官方文档: https://cn.vuejs.org/api/sfc-script-setup.html#defineexpose

标签:count,setup,child,实例,vue3,组件,import,ref
From: https://www.cnblogs.com/chenhan666/p/17568334.html

相关文章

  • jquery父子组件通信
    jQuery父子组件通信jQuery是一个流行的JavaScript库,用于简化HTML文档遍历、事件处理、动画操作以及Ajax等常见任务。它提供了丰富的API,使得开发人员可以轻松地操作DOM元素并实现各种交互效果。在复杂的Web应用程序中,经常会遇到父子组件之间的通信需求。父子组件通信是指父组件与......
  • Unity UGUI的AspectRatioFitter(宽高比适应器)组件的介绍及使用
    UnityUGUI的AspectRatioFitter(宽高比适应器)组件的介绍及使用1.什么是AspectRatioFitter组件?AspectRatioFitter(宽高比适应器)是UnityUGUI中的一个组件,用于控制UI元素的宽高比例,使其能够根据父容器的大小进行自适应调整。2.为什么要使用AspectRatioFitter组件?AspectRatioFitte......
  • Unity UGUI的ContentSizeFitter(内容尺寸适应器)组件的介绍及使用
    UnityUGUI的ContentSizeFitter(内容尺寸适应器)组件的介绍及使用1.什么是ContentSizeFitter组件?ContentSizeFitter是UnityUGUI中的一个组件,用于自动调整UI元素的大小,以适应其内容的大小变化。它可以根据内容的大小自动调整UI元素的宽度和高度,确保内容不会被截断或溢出。2.Cont......
  • html5页面中使用vue组件DEMO
    资源下载npmhttp-vue-loader:https://www.npmjs.com/package/http-vue-loader http-vue-loader.js下载 普通html5使用vue组件1、页面引入相关JS文件 2、创建components组件 3、主页面创建vue实例 引入相关组件名 4、html中使用vue组件 ......
  • 58.请使用vue3+vite+typescript+element-plus+setup语法糖,使用xlsx和file-saver实现保
    1<template>2<div>3<el-table4:data="mergedTableData"5border6stripe7>8<!--表头-->9<el-table-column10prop="date"11label="......
  • 前端Vue自定义开屏启动广告组件,点击广告图跳转广告详情
    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随意的进行组合。大大提升开发效率......
  • vue--day31---组件的嵌套
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>组件的嵌套</title><scripttyp......
  • 组件节点管理
    节点类型分为观察、游离、共识节点,三种节点可以相互转换组员:共识节点,参与共识的节点,拥有群组所有数据,搭建链的时候默认生成共识节点观察者节点;不参与共识,但能实时同步链上数据节点非组员:游离节点,启动,暂时节点状态,不能获取链上数据操作命令控制台提供了 addSealer 、addObserver ......
  • 打造独具匠心的UI设计组件库:设计师入门必读!
    今天给大家分享一篇关于组件化设计的总结,希望可以带给大家更多设计思考。 什么是组件化⬇⬇⬇点击获取更多设计资源https://js.design/community?category=design&source=bky&plan=bbqbky772   组建化是构成界面的最基础元素和重复出现控件的集合体,也就是常说的组件......
  • 使用vuex实现任意组件间通信
    title:使用vuex实现任意组件间通信date:2023-07-1915:51:54tags:-vuecategories:-工程-前端top:使用vuex实现任意组件间通信学习vue的第五天,学到了用插件vuex来实现vue任意组件之间的通信。以下是个人理解,如有错误请指正。vuex描述Vuex是一个专为Vue.js应......