Create global helper / mixin Nuxt 3

问题描述 投票:0回答:2

我在 nuxt 3 项目中使用 Swiper Element,想创建一个全局插件并调用 register()。我似乎无法让它工作。这在 Nuxt 2 中非常容易。

plugins/swiper.ts

import { register } from 'swiper/element/bundle';

export default defineNuxtPlugin((nuxtApp) => {
  nuxtApp.vueApp.use(register)
})

现在如何在页面或组件文件中调用此方法?还是让它在全球范围内自动导入和访问?

vue.js nuxt.js nuxtjs3
2个回答
0
投票

要在页面或组件文件中调用register方法,可以导入Swiper Element bundle,直接调用register方法:

<script>
import { register } from 'swiper/element/bundle';

export default {
  mounted() {
    register();
  }
}
</script>

要在全局范围内自动导入和访问插件,您可以在nuxt.config.js 文件中注册插件:

// nuxt.config.js

export default {
  // ...

  plugins: [
    '~/plugins/swiper.js'
  ],

  // ...
}

然后就可以在任何组件或页面文件中访问register方法,无需导入:

<script>
export default {
  mounted() {
    this.$swiper.register();
  }
}
</script>

请注意,您需要在 register 前加上 $swiper,因为插件将它作为属性添加到 Vue 实例中。


0
投票

如果您想在 NuxtApp 实例上提供帮助程序,请在提供键下从插件返回它。

export default defineNuxtPlugin((nuxtApp) => {
    return {
          provide: {
               register: register
          }
    }
})

在另一个文件中你可以使用这个:

<template>
  <div>
  </div>
</template>
<script setup lang="ts">
const { $register } = useNuxtApp()
</script>

有关更多详细信息:nuxt3 插件文档.

© www.soinside.com 2019 - 2024. All rights reserved.