唐山玉田网站建设,网络宣传方式有哪些,天翼云免费服务器,搜索引擎技术问题描述 vue3 中#xff0c;通过 createVNode 创建子组件实例时#xff0c;发现子组件无法获取到父组件中的 router、store 信息#xff0c;一旦子组件使用就会报错。 问题原因
通过控制台断点调试#xff0c;发现时 appContext 值为空导致的。怀疑是创建子组件的时候通过 createVNode 创建子组件实例时发现子组件无法获取到父组件中的 router、store 信息一旦子组件使用就会报错。 问题原因
通过控制台断点调试发现时 appContext 值为空导致的。怀疑是创建子组件的时候没有将父组件中的上下文传递过去。
源码
/*** 初始化容器* param app {App}* param options {PartialOptionsProps}*/
function renderContainer(app:App, options: PartialOptionsProps) {const vnode createVNode(options.container);// const box HTMLElementdocument.createElement(div);render(vnode, document.body);// document.body.appendChild(box);const vm ComponentInternalInstancevnode.component;containerRef vm.exposed?.reference;
}解决方案 ,需要将父组件中的context传递给子组件中 // 代码块
vnode.appContext app._context;修改后的代码
/*** 初始化容器* param app {App}* param options {PartialOptionsProps}*/
function renderContainer(app:App, options: PartialOptionsProps) {const vnode createVNode(options.container);if (app._context) {vnode.appContext app._context;}// const box HTMLElementdocument.createElement(div);render(vnode, document.body);// document.body.appendChild(box);const vm ComponentInternalInstancevnode.component;containerRef vm.exposed?.reference;
}亲测可以