首页 > 其他分享 >formilyjs/element-plus 设置中文无效的原因

formilyjs/element-plus 设置中文无效的原因

时间:2024-05-25 19:44:19浏览次数:22  
标签:中文 设置 element export TimePicker localeContextKey formilyjs plus

工作中用到了这个库,但是使用国际化设置中文却不行,所以查看源码 发现了不行的原因

直接说结论,不浪费大家时间,不是使用方法有问题,就是这个库自身的bug,想要设置中文,要么改源码
要么直接使用原生element

原理分析

先看看element是如何设置成中文的

image
这是官网的写法,那么看看这个组件内部是如何设置的

  provideFn(
    localeContextKey,
    computed(() => context.value.locale)
  )

export const localeContextKey: InjectionKey<Ref<Language | undefined>> =
  Symbol('localeContextKey')

原理很简单 其实就是利用vue的provide和inject来实现的,每个组件都会通过inject来获取你当前的语言,
在el-config-provider组件里则provide出去设置的语言。注意这个localeContextKey是个symbol类型。
这也是导致formilyjs/element-plus不能设置中文的原因

formilyjs/element-plus的问题在哪里

它其实就是对element做了一层简单的封装,举个TimePicker的简单的例子

import type { TimePicker as ElTimePickerProps } from 'element-ui'
import { TimePicker as ElTimePicker } from 'element-ui'

export type TimePickerProps = ElTimePickerProps

const TransformElTimePicker = transformComponent<TimePickerProps>(
  ElTimePicker,
  {
    change: 'input',
  }
)

export const TimePicker = connect(
  TransformElTimePicker,
  mapProps({ readOnly: 'readonly' }),
  mapReadPretty(PreviewText.TimePicker)
)

export default TimePicker

可以看出就是对TimePicker做了一层封装,那是什么导致设置中文失效呢

因为localeContextKey是个symbol类型,你使用原生element的localeContextKey设置的中文,也只能在原生
的组件中生效,要使得formily中的组件生效,则必须提供对应封装时使用的element的localeContextKey出来给开发者使用

标签:中文,设置,element,export,TimePicker,localeContextKey,formilyjs,plus
From: https://www.cnblogs.com/wzcsqaws/p/18212932

相关文章

  • Mybatis-plus插件功能
    MyBatisPlus自带分页插件,只需简单的配置就可以实现分页功能添加配置类注解@Configuration@ConfigurationpublicclassMyBatisPlusConfig{//配置分页插件@BeanpublicMybatisPlusInterceptormybatisPlusInterceptor(){MybatisPlusInterceptorin......
  • MyBatisPlus初始代码生成
    1.安装插件 这里使用的是这一个插件 2.连接数据库插件安装完毕后重启idea,发现后面多了一个选项点击 这里要与自己的database对应,设置好后点击testconnect测试,成功就可以了如果出现:Theservertimezonevalue'�й���׼ʱ��'isunrecognizedorrepresentsmoret......
  • Mybatis-plus的Service接口
    在有了实体类的基础上,创建UserInfoMapper接口,并继承BaseMapper接口publicinterfaceUserInfoMapperextendsBaseMapper<UserInfo>{}继承IService创建Service接口,并创建对应的实现类publicinterfaceUserInfoServiceextendsIService<UserInfo>{}UserInfo......
  • Mybatis-plus核心功能-自定义SQL
    MyBatis-Plus提供了强大的条件构造器。通过条件构造器可以写一些复杂的SQL语句,从而提高我们的开发效率。通过EntityWrapper(简称EW,MP封装的一个查询条件构造器)或者Condition(与EW类似)来让用户自由的构建查询条件,简单便捷,没有额外的负担,能够有效提高开发效率,它主要用于处理......
  • MybatisPlus公用Page导致同对象返回
    代码 Page<CouponInfo>page=newPage<>(1,-1);CouponInfocouponInfo1=newCouponInfo();couponInfo1.setId(1630503086041903106L);Page<CouponInfo>couponInfoPage=couponInfoMapper.selectPageList(couponInfo1,pa......
  • MybatisPlus
    Mybatis-plus:Mybatis增强工具,只做增强,不作改变,简化开发,提高效率。Mybatis-plus特点:无侵入:Mybatis-Plus在Mybatis的基础上进行扩展,只做增强不做改变,引入Mybatis-Plus不会对现有的Mybatis构架产生任何影响,而且MP支持所有Mybatis原生的特性依赖少:仅仅依赖Myba......
  • Element-plus按需加载
    1、需安装unplugin-vue-components 和 unplugin-auto-import这两款插件npminstall-Dunplugin-vue-componentsunplugin-auto-import2、修改vite.config.js配置文件import{defineConfig}from'vite'importAutoImportfrom'unplugin-auto-import/vite'impor......
  • 全局设置element-ui Dialog组件的close-on-click-modal属性为false
    前言element组件库的Dialog对话框默认可以通过点击modal关闭Dialog,即点击空白处弹框可关闭。属性  importElementUIfrom'element-ui'import'element-ui/lib/theme-chalk/index.css'//默认主题//全局修改默认配置,点击空白处不能关闭弹窗ElementUI.Dialog.......
  • element ui 动态表头不刷新问题
    今天弄vue前端,动态表头出现如题问题。代码如下<el-table-columnv-for="(item,index)intableHeads":key="index"><templateslot="header">//处理表头业务逻辑……<div>{{item.num}}</div></template></el-table-column>......
  • 离线文档(vue/react/element/element-plus/ands vue等等)
    特殊环境需要离线状态文档的请参考这里 可以在你所想要的东西在github的官方项目上找一个名字包含‘gh-page’或者‘get-page’的分支下载下来然后本地win+Rcmd输入npminstallsgo-g全局下载sgo之后在你下载下来的文件夹根目录cmd打开终端输入sgo--fallindex.html......