开发者问题收集

nuxt 中的调用上下文在 v-bind 中不起作用

2022-04-17
728

我对在 Nuxt 中使用上下文或原型有疑问

我为“modal”名称创建了一个常量,如下所示:

export default Object.freeze({ 
  MODAL_SHOWPRO: "MODAL_SHOWPRO",
})

我还在插件文件夹中创建了 constant.js ,并已添加到 nuxt 配置中。

import modals from '@/constants/modal';
export default ({ app }, inject) => {  
  inject('modalName', modals)
}

在组件中,我无法从 v-bind 调用值,它显示:未定义 MODAL_SHOWPRO

<Popup :id="$modalName.MODAL_SHOWPRO" />

但我可以从 $emit 函数调用它,如下所示:

@click="$nuxt.$emit('showModal', {id: $modalName.MODAL_SHOWPRO})"

你能告诉我为什么以及如何修复它吗?

注意:它将工作,如果: 我制作数据

{
    modal: ''
}

并添加到创建时间:

async created() {      
    this.modalName = await this.$modalName
}
1个回答

Nuxt 是一个元框架,旨在提供通用应用程序(服务器然后是客户端)。因此,您需要同时考虑服务器和客户端。

在您的代码中,您指定了 ssr: false ,这已经过时了,应该是 mode: 'client' 。但这样设置仍然是 false,因为这意味着 ENUM 在服务器上不可用(因此出现错误)。

这样设置更合适(考虑到插件的性质),也可以解决问题

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

有关 Nuxt 插件的更多信息: https://nuxtjs.org/docs/directory-structure/plugins#plugins-directory

kissu
2022-04-17