如何在Vue.js与Nuxt.js中将组件导入移至父组件?
解决方案
没问题,这个调整其实很直观,你只需要按以下两个步骤操作就能完成:
1. 更新页面组件 pages/some-page/index.vue
把原本在这个页面里导入和注册的Component1、Component2、Component3全部移除,只保留ContentRoot的相关代码。修改后的完整代码如下:
<template> <content-root> <!-- 如果你需要往ContentRoot里传递插槽内容,可以在这里编写,否则保持空即可 --> </content-root> </template> <script> import ContentRoot from '~/components/content-root' export default { layout: 'content', components: { ContentRoot } } </script>
2. 调整父组件 components/content-root.vue
现在把之前页面里的三个子组件导入和注册逻辑移到ContentRoot里。另外要注意:如果你的ContentRoot需要渲染这三个子组件,一定要在它的<template>部分添加对应的组件标签(比如<component1 />、<component2 />),不然只是注册了组件却不会在页面上显示。修改后的content-root.vue完整代码示例如下:
<template> <div class="content-root-wrapper"> <!-- 根据你的业务需求放置这三个子组件 --> <component1 /> <component2 /> <component3 /> <!-- 若需要接收页面传递的插槽内容,添加<slot />标签 --> <slot /> </div> </template> <script> import Component1 from '~/components/component1' import Component2 from '~/components/component2' import Component3 from '~/components/component3' export default { // 注意:layout是pages目录下页面组件的专属配置,components目录的组件不需要设置此项 components: { Component1, Component2, Component3 } } </script>
小提醒
layout: 'content'是页面组件(pages目录下的文件)特有的配置项,components目录下的组件不需要设置这个属性,所以在content-root.vue里一定要去掉这个配置,避免出现不必要的问题。
内容的提问来源于stack exchange,提问作者Akshdeep Singh
相关产品推荐
相关产品推荐

