如何在 Vue 3 中读取父元素的 data 属性并传递给子组件 prop

大丽酱_2505

大丽酱_2505

2026-05-28

475人浏览

原创

如何在 Vue 3 中读取父元素的 data 属性并传递给子组件 prop

在 Vue 3 中,无法直接通过模板语法访问父级 HTML 元素的 data-* 属性;正确方式是使用 ref 获取组件根元素,再通过原生 DOM 方法(如 parentElement.getAttribute())读取父级 data-pagenumber 等属性,并在 onMounted 钩子中赋值给响应式 prop。

在 vue 3 中,无法直接通过模板语法访问父级 html 元素的 `data-*` 属性;正确方式是使用 `ref` 获取组件根元素,再通过原生 dom 方法(如 `parentelement.getattribute()`)读取父级 `data-pagenumber` 等属性,并在 `onmounted` 钩子中赋值给响应式 prop。

在 Vue 3 的组合式 API 中,$parent 和 Vue 2 中的 $attrs 行为已发生重大变更:$attrs 默认不包含非 props 声明的 attribute(如 data-pagenumber),且 setup() 上下文不再隐式提供 this 或 $parent。因此,依赖响应式上下文穿透的方式不再适用——必须回归 DOM 层面进行显式查询。

推荐做法是:为子组件根元素添加 ref,在 onMounted 生命周期钩子中,通过 ref.value.parentElement 向上查找最近的父容器,再调用 getAttribute('data-pagenumber') 获取值,并同步至组件内部的响应式状态(如 ref)。该方案稳定、语义清晰,且完全兼容 SSR(服务端渲染)以外的客户端场景(因 onMounted 仅在浏览器端执行)。

以下是完整可运行示例:

vue-composition-api-best-practices
vue-composition-api-best-practices

Vue 3 组合式 API 与

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app快速上手
uni-app快速上手

共0课时 | 0人学习

Vue 教程
Vue 教程

共42课时 | 17.2万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 2.5万人学习