为什么无法访问Vue3实例上的$data与data()定义的响应式数据?
问题原因分析
- 混淆了Vue 3的应用实例和根组件实例:
Vue.createApp()返回的是应用实例,仅用于全局配置、注册插件/全局组件,本身不承载组件的data、methods等属性。你需要调用mount()方法将应用挂载到DOM节点,返回的对象才是根组件实例,此时才能正常访问$data和自定义的data字段。
正确使用示例:
const vueapp = Vue.createApp({ data(){ return { form:{ // 表单相关字段 } } } }) // 挂载到对应DOM节点,获取根组件实例 const rootInstance = vueapp.mount('#app') // 此时打印可正常获取数据 console.log(rootInstance.$data, rootInstance.form)
- 打印操作执行在挂载完成前:如果在调用
mount()方法之前就执行打印代码,此时组件实例还未完成初始化流程,返回值自然为undefined。
内容的提问来源于stack exchange,提问作者Luca Reghellin
相关产品推荐
相关产品推荐

