VUE3 vue-i18n Must be called at the top of a `setup` function

发布于 2022-09-13 00:34:20 字数 434 浏览 19 评论 0

在请求网络接口后直接i18n后,报错

useI18n().t('menu.home')

Test.vue?a796:106 SyntaxError: Must be called at the top of a setup function

at createCompileError (message-compiler.esm-bundler.js?f92f:32)
at createI18nError (vue-i18n.esm-bundler.js?47e2:66)
at useI18n (vue-i18n.esm-bundler.js?47e2:2029)
at i18nRender (index.js?bf0f:52)
at i18n (RoleMenu.vue?a796:84)
at eval (RoleMenu.vue?a796:94)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

骄兵必败 2022-09-20 00:34:20

临时找到一个方案,使用 getCurrentInstance 的proxy,然后proxy.$t('opt.ok')

import {  getCurrentInstance} from 'vue'

  setup() {
            
          const { proxy }  = getCurrentInstance()
          const handleSelect = ({ key }) => {
                if (key === 'delete') {
                    batchDeleteRole(toRaw(state.selectedRowKeys)).then(res => {
                        if (res.success) {
                            table.value.refresh(true)
                          message.success(proxy.$t('opt.ok'))
                        } else {
                            message.error(res.message)
                        }
                    })
                }
            }
 }
诗笺 2022-09-20 00:34:20
// lang/index
import { createI18n } from 'vue-i18n'

// import 'default-passive-events'
import en from './en'
import cn from './cn'

const i18n = createI18n({
  legacy: !true,
  globalInjection: true,
  locale: localStorage.getItem('language') || 'cn',
  messages: {
    en,
    cn,
  },
})

export default i18n
import i18n from '@/lang/index'

const { t, } = i18n.global
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文