element plus中el-form的校验message i18n 不生效的解决方案

这里写自定义目录标题

起因

最近想拿vue3 练练手,在编写表单时使用了element plus 的form表单,在编写校验提醒时遇到如下问题
无论如何切换语言,message 始终提示的是中文语言包

const i18n = useI18n()

const rules = ref({
  username: [
    {
      required: true,
      trigger: 'blur',
      message: i18n.t('message.usenameRule')
    }
  ],
  ...
})

如上编写代码后, 无论如何切换语言 message 始终是用的中文语言包,查了半天资料后,发现网上的相关例子也是这样写,但没有问题。

解决

在外面包一层 computed就可以解决
怀疑是因为i18n丢失了响应式,套了一层computed 使得message 获取的是一个计算属性,计算属性依赖i18n 达到了更新的作用

const  usernameRuleMessage = computed(()=> i18n.t('message.usenameRule') )

const rules = ref({
  username: [
    {
      required: true,
      trigger: 'blur',
      message: usernameRuleMessage 
    }
  ],
  ...
})

后续

具体产生原因还没有发现,在js文件中使用i18n 功能就能正常使用,useI18n 使用就必须套一层 computed
目前版本 vue-i18n: ^9.1.10

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值