在vue 3中观察父组件的子属性

2024-01-07

我想知道如何使用组合 api 观察 Vue 3 中父组件的子属性(我正在使用实验脚本设置 https://github.com/vuejs/rfcs/blob/script-setup-2/active-rfcs/0000-script-setup.md).

<template>//Child.vue
  <button 
    @click="count++" 
    v-text="'count: ' + count" 
  />
</template>

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

let count = ref(1)
</script>
<template>//Parent.vue
  <p>parent: {{ count }}</p> //update me with a watcher
  <Child ref="childComponent" />
</template>


<script setup>
import Child from './Child.vue'
import { onMounted, ref, watch } from 'vue'

const childComponent = ref(null)
let count = ref(0)

onMounted(() => {
  watch(childComponent.count.value, (newVal, oldVal) => {
    console.log(newVal, oldVal);
    count.value = newVal
  })
}) 
</script>

我想了解如何从父组件观察子组件的变化。我的不起作用的解决方案的灵感来自Vue.js 2 解决方案在这里询问 https://stackoverflow.com/questions/51225378/how-to-watch-child-properties-changes-from-parent-component。所以我不想发出count.value但只要注意变化即可。

谢谢你!


里面的绑定<script setup>如您所见,“默认关闭”here https://github.com/vuejs/rfcs/blob/script-setup-2/active-rfcs/0000-script-setup.md#closed-by-default.

但是您可以明确公开某些参考文献。 为此,您使用useContext().expose({ ref1,ref2,ref3 })

因此只需将其添加到 Child.vue 中:

import { useContext } from 'vue'

useContext().expose({ count })

然后将Parent.vue中的Watcher更改为:

watch(() => childComponent.value.count, (newVal, oldVal) => {
    console.log(newVal, oldVal);
    count.value = newVal
  })

它有效!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在vue 3中观察父组件的子属性 的相关文章

  • Vuejs2 Modal 与 vue-router 中的路线

    我正在尝试使用模态创建一条路由 当您使用路由器链接访问此路由器路径时 会在当前页面上方显示一个模态 或者如果我直接从 url 访问 则会出现上面带有模态的索引 例如 我在http localhost 个人资料 1 http localhos
  • Vue - 仅在第一个操作完成后调用异步操作

    我需要从组件内部调用 2 个操作 但第二个操作只能在第一个操作 100 完成其工作后才开始 我正在尝试这个 但它不起作用 mounted this store dispatch coinModule loadApiCoins then gt
  • 使用 Vercel 进行 Vue.js 历史记录模式的服务器配置?

    我设置了一个非常基本的 Vue js 应用程序 主要使用这些步骤 https auth0 com docs quickstart spa vuejs 01 login 当我将路由器添加到该项目时 它询问我是否要使用历史模式 我说是 现在我正
  • Vue js按钮冻结dom

    我试图在按下按钮时切换包含加载动画的跨度 直到使用 v if 函数完成 但是当我按下按钮时 DOM 冻结并且 span 元素保持不变 直到函数调用结束 如何让 DOM 不冻结并显示加载图标 非阻塞按钮按下可能是一个解决方案 HTML
  • 将 VueJs 组件添加到 Django 模板中

    我正在开发一个 Django 网站 我希望将一些 Vue 组件 散布 到 Django 渲染的模板中 我正在单个存储库中工作 并使用 webpack 设置来创建我在 Django 模板中使用的 style js 包 我正在努力让功能按照我想
  • Vue3 Composition API 中的动态组件

    Vue2动态组件的简单工作示例
  • Vue.js 动态图像路径未加载

    我试图在单个文件组件中动态加载图像 但收到错误消息 指出无法找到该模块 我想我正在尝试做同样的事情这个帖子 https stackoverflow com questions 40491506 vue js dynamic images n
  • 如何在 vuejs 中防止/停止点击传播

    我有一个递归列表 树 每个元素都有一个 click sayHello el id 现在的问题是 因为它是一个嵌套列表 例如 list element 0 01 list el 1 01 list el 2 01 list el 1 02 l
  • 如何从 vue 组件调用 App.vue 中的方法

    我有一个 vue 组件和一个 vue 元素声明 如下所示 Vue component todo item template li This is a todo li methods test function I am getting an
  • node.js、vue.js 和express.js 堆栈开发

    我正在尝试使用 Linux 上的 Visual Studio Code IDE 使用 vue js express js 和 node js 创建一个 Web 应用程序 根据网上的一些文档 我读到安装 vue js 后 可以创建一个vue
  • 模拟安装挂钩 Jest 测试装置

    我正在对组件进行一些单元测试 但是 在某些组件中 我有一些东西在运行mounted使我的测试失败的钩子 我设法模拟了我不需要的方法 但是 我想知道是否有一种解决方法可以模拟mounted钩住自己 components attendeesLi
  • Asyncdata 与 Fetch 之间的区别

    获取数据和异步数据之间的确切区别是什么 官方文档是这么说的 异步数据 您可能想要获取数据并在服务器端呈现它 Nuxt js 添加 asyncData 方法 让您可以在之前处理异步操作 设置元件数据 异步数据每次在加载组件之前调用 仅适用于
  • 在 ES6 中使用 import 和 require 的正确方法是什么?

    关于 import 和 require 及其差异有多个问题 像这些 JavaScript 中的 import 和 require 有什么区别 https stackoverflow com questions 51373933 what i
  • 如何在Vue中提交表单,重定向到新路由并传递参数?

    我正在使用 Nuxt 和 Vue 我正在尝试提交表单 将用户重定向到包含提交的参数的新路由 发送 API 请求以获取一些数据 然后渲染该数据 我通过简单地将表单操作设置为新路径并手动将所有 URL 参数添加到 API 请求来实现此目的 首先
  • Vue 3:使用渲染函数将所有项目包装在一个自定义组件中

    我正在尝试建立自己的sortable成分 我想将项目列表传递到它的默认插槽 然后 可排序组件应该用自定义包装所有传递的项目v draggable成分
  • Vue js - 在同一级别的两个组件内传递数据

    我有需要从一个传递的数据component1到另一个component2 我不使用vuex or router 组件树 Parent Component1 Component2 从一开始component1我发出 ajax 请求 检索信息并
  • npm run dev 和 npm run production 之间的区别

    我对 Laravel 和 vue js 很陌生 请让我知道它们之间有什么区别npm run dev and npm run production 这和环境有关系吗 npm run dev创建源映射并且不会缩小 js css 这使得调试和查找
  • 如何将 Jitsi Meet 添加到 Vuejs

    我已在 public html 的正文中加载了 jitsi meet 脚本 并且我有一个组件 如下所示
  • 有没有V型斗篷的反面?

    根据VueJS 文档 https v2 vuejs org v2 api v cloak v cloak 指令可用于隐藏未编译的 Mustache 绑定 直到 Vue 实例准备就绪 换句话说 我可以隐藏一个div或类似的东西 当 vue 准
  • Vue 监听 Vuex 提交吗?

    有没有一种方法可以监听 Vuex 提交 而不观察任何随提交而更改的属性 只是简单地找出是否发生了提交 我有一个 Filter 组件 想将其放入 NPM 包中 但我已经有一个用例 在该用例中 我希望设置一个 cookie 在选择过滤器时存储过

随机推荐

  • SQLite 循环语句?

    SQLite中有没有类似的循环语句FOR in LOOP或类似的东西 我有两列StartRange EndRange我需要在另一个表中插入整个序列 因此 如果StartRange是 1 并且EndRange是 3 需要用这些值进行三个插入1
  • 为什么嵌入 iframe 的 Facebook 应用程序中的 XFBML 标记不显示任何内容?

    我一直在尝试让这个应用程序在 Facebook 上运行 但是 应用程序中似乎没有任何内容呈现 除了 Hi this is some sample text A box stroked in red I am My photo and a d
  • SQL:插入新记录或仅替换某些字段的查询

    我的数据库是 SQLite 但我确信问题通常适用于 SQL 比如说 我有一个表 students 其中包含 id 主键 name selected 列 我有时需要从外部源更新所述表 但我只收到一个包含 id 和名称的表 当每行发生所述更新时
  • 如何为log4jdbc配置log4j2.xml?

    有谁知道如何配置 log4j2 xml 文件以使用 log4jdbc 我已经搜索了几个小时 但似乎找不到任何东西 log4jdbc依赖SLF4J http www slf4j org 迄今为止 SLF4J 和 Log4j 2 之间还没有合适
  • 是否需要同时关闭 NetworkStream 和 TcpClient,还是只关闭 TcpClient?

    我正在阅读有关 TcpClient Close 的文档 http msdn microsoft com en us library system net sockets tcpclient close 28v VS 100 29 aspx并
  • lit-html 的动态标签不可能吗?

    谁能告诉我为什么我不能在 list html 中使用变量html method const h1 h1 return html lt h1 class a heading classes gt
  • 使用 html 按钮按键盘上的转义键

    HTML 按钮 按下时模拟按下 ESC 键盘按键 因此 单击按钮与用户按键盘上的 ESC 键具有相同的效果 如果以任何方式肯定不可能 请告诉我 什么方法都可以 编辑 我不想按 ESC 键来触发某些东西 我想要相反的东西 触发 ESC 键 试
  • Python - 以非线性方式运行循环

    所以 我正在寻找一种以 for 循环方式循环遍历项目列表的方法 但我希望循环以 随机 方式迭代 即我不希望循环进行 0 1 2 3 m 1 n 我希望它以某种随机顺序选择它 并且仍然遍历所有项目的循环 这是我当前的循环代码 for sing
  • 验证特定电子邮件特定域设计 3 ruby​​ on Rails 4

    我之前发布了一个关于如何使用验证仅允许使用以 grenoble em com 结尾的电子邮件地址的访问者能够在我的网站上注册的问题 我正在使用 devise 3 和 Rails 4 我对它相当陌生 希望得到任何答案 这是我的用户模型 cla
  • Putty 有时喜欢在我的命令行中打印自己

    所以 有时当我通过连接到linux服务器的putty用C语言编程时 在执行我的C文件进行测试后 命令行会重复填写 PuTTY 一词30到40次 有时它会在我的程序中多次显示该单词 还有其他人有类似的问题吗 如果与此有关的话 我也会进行文件
  • 如何安全地设置GitLab环境变量?

    我不想将敏感凭证 如 API 密钥 密码等 放入我的分支中 为此 GitLab 和其他 CI CD 服务 能够设置环境变量 它们将在部署过程中注入到脚本中 我知道 GitLab 设置它们的两种方法 Via UI Project Settin
  • 摆动时平滑的圆角

    我想为我的摆动应用程序制作平滑的圆角 但我无法获得我想要的结果 这是截图 1 setShape 对于 JFrame 2 压倒性的paintComponent JPanel 的方法而不是使用setShape 3 setBackground n
  • 我们可以在 xpath 值中使用正则表达式吗?

    我们可以在 xpath 值中使用正则表达式吗 我正在使用 xpath 值来识别网络上的自动化元素 我有以下 xpath 值 xpath id ngdialog4 div 2 div 2 table tbody tr td 1 input 但
  • 将 Observables 与反馈合并,将 Observable 与其自身合并

    我需要创建 Observable 它将从不同的来源 其他 Observables 收集信息 每个来源都会对事件值产生影响 但该值仍然是基于先前的值 一种状态机 构建的 我们有带有 int 值和操作代码的消息 class Message In
  • 如何在 Typescript 中将接口转换为映射类型

    背景 In the 打字稿文档 https www typescriptlang org docs handbook advanced types html mapped types对于映射类型 给出以下示例 type Proxy
  • 为嵌入式系统中的平台总线编写设备驱动程序?

    我已经浏览了 Linux 内核源代码中的一些驱动程序实现 可以看到这些是平台驱动程序 drivers net ethernet smsc smsc911x c static struct platform driver smc911x dr
  • 没有名为 sympy 的模块

    你好 我正在 Edx 课程中使用 python 学习线性代数 http nbviewer ipython org github ULAFF notebooks tree may 14 2014 http nbviewer ipython o
  • 使用自定义光标 WinForms

    有没有办法在winforms中使用自定义光标 似乎没有选择 但是当我尝试手动添加游标作为资源 然后从代码中调用它时 它说它无法从类型 byte 转换为游标 在 C 中向光标添加自定义图标 将图标文件添加到项目资源 例如 Processing
  • 如何将字典作为函数的参数传递以及如何在函数中访问它们

    我尝试这样做 def func dict if dict a dict b dict c dict a return dict num a 1 b 2 c 2 print func num 但它给出了类型错误 Func 遇到了意外的争论 使
  • 在vue 3中观察父组件的子属性

    我想知道如何使用组合 api 观察 Vue 3 中父组件的子属性 我正在使用实验脚本设置 https github com vuejs rfcs blob script setup 2 active rfcs 0000 script set