【问题标题】:Global Components in Nuxt JSNuxt JS 中的全局组件
【发布时间】:2020-08-04 23:02:15
【问题描述】:

我已经构建了一些组件,例如模态框和评论,我想在我网站的几乎所有地方使用和重用它们。

我在插件文件夹中创建了一个 global.js 文件,所以我只是在我的 nuxt.config.js 文件中注册了一次。

在我的 global.js 文件中,我导入了 vue 并调用了组件

import Vue from 'vue';
Vue.component('component-modal', () => import('@/components/modal'));
Vue.component('component-modal-other', () => import('@/components/modalOther'));
Vue.component('component-reviews', () => import('@/components/reviews'));

这样做的原因是,现在我不必在要使用它的每个实例上都执行component import,因为我只需调用组件<my-component>

但是我刚刚切换到通用模式,现在我收到了来自我在插件文件夹中创建的 global.js 组件文件的水合警告。

我是否应该没有 global.js 文件,并且我想全局使用的每个组件在 plugins 文件夹中都有自己的文件?还是我只需要在需要它的文件中本地需要它时导入它?

重用和注册我创建的全局迷你组件的最佳方法是什么?

Vue 警告

The client-side rendered virtual DOM tree is not matching server-rendered content. This is likely caused by incorrect HTML markup, for example nesting block-level elements inside <p>, or missing <tbody>. Bailing hydration and performing full client-side render

我可以避免此警告的唯一方法是不要将我的组件放入 global.js 组件文件并使用 Nuxt 插件注册它。仅将组件导入到每个实例中,这会违背全局组件的目的

【问题讨论】:

标签: vue.js nuxt.js


【解决方案1】:

试试这个

import Modal from '@/components/modal'
Vue.component('Modal', Modal)

在你看来

</modal>

【讨论】:

  • 当我在 global.js 文件中尝试此代码时,仍然是相同的水合警告。我可以避免这种情况的唯一方法是将导入组件放入我需要的每个实例中。 ----“客户端渲染的虚拟DOM树与服务器渲染的内容不匹配”
猜你喜欢
  • 2017-08-19
  • 1970-01-01
  • 2021-04-10
  • 2021-08-23
  • 2019-12-20
  • 2019-01-29
  • 2022-08-16
  • 2016-10-06
  • 2020-04-18
相关资源
最近更新 更多