You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue组件data箭头函数中使用Laravel本地化字符串报错求助

问题:Vue组件data选项(箭头函数)中无法使用Laravel本地化函数__()

问题场景

在Vue.js组件的Sweetalert2代码里,能正常通过this.__('xxx')调用Laravel本地化字符串,但在另一个组件的data选项使用箭头函数写法时,把本地化字符串作为数组元素的name属性会触发错误。

报错代码片段

<script>
  data: () => ({ 
            sides: [
                {
                    id: 1,
                    name: this.__('offers.front'),
                },
                {
                    id: 2,
                    name: this.__('offers.back'),
                }
            ],
    }),
</script>

控制台错误信息

app.js:247950 [Vue warn]: Error in data(): "TypeError: Cannot read properties of undefined (reading '__')"

正常工作的代码(Sweetalert2中)

<script>
Swal.fire(
    this.__('offers.front'),
    this.__('offers.back'),
    'success'
)
</script>

尝试去掉this后,模板中只会显示原始字符串(如offers.front),不会展示本地化后的内容。

解决方案

原因

箭头函数没有自身的this上下文,它会继承外层作用域的this。Vue组件的data选项用箭头函数时,this不会指向组件实例,因此无法访问挂载在实例上的__方法。

解决方法

  1. 将data改为普通函数写法(推荐)
    把箭头函数换成普通函数,此时this会指向Vue组件实例,就能正常调用__方法:
<script>
  data() { 
      return {
          sides: [
              {
                  id: 1,
                  name: this.__('offers.front'),
              },
              {
                  id: 2,
                  name: this.__('offers.back'),
              }
          ]
      }
  },
</script>
  1. 直接调用全局挂载的__方法(备选)
    Laravel通常会把本地化函数挂载到全局window对象上,若必须用箭头函数,可直接调用全局方法:
<script>
  data: () => ({ 
            sides: [
                {
                    id: 1,
                    name: window.__('offers.front'),
                },
                {
                    id: 2,
                    name: window.__('offers.back'),
                }
            ],
    }),
</script>

注意:这种方式依赖全局变量,耦合性较高,优先推荐第一种方案。

内容的提问来源于stack exchange,提问作者iggivannaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:55:44