react 替换标签内容_如何在 React 里自定义标签和属性?

日常开发中通常会有一些需求,需要定义一些全局通用的组件,在 Vue 里是有这样的功能,但是在 React 里,没有见过有类似的做法,通常都是在需要的时候引入组件,原则上在 Jsx 里只允许 html 的文本标签以及 function 类型的标签,本文的做法只做参考

背景

最近在考虑做国际化,但是系统构建之初,产品并没有做国际化的计划,系统开发上线以后,又有了国际化的需求,但是系统已经上线,这时候在去用 react-i18n 之类的方案太重了,所有的页面、组件都要引用这个库,需要国际化的地方都需要修改,同时要维护语言的映射文件,工作量太大了,所有考虑一种更好的方案,思考如何能无侵入的实现国际化,这里的构建自定义标签的目的是希望通过标签收集系统文字。

示例代码:

render(){

return (

需要翻译的文字

需要翻译的文字

)

}

所有 local 标签或者加了 translate="yes" 的标签里的文字都需要被翻译,translate是 HTML5 的新属性,这里借用它。

自定义标签有哪些方案

编译期转换

一般通过编译期转换是可以做到的,但是需要开发相关 webpack loader ,调整生成的代码,这么做比较麻烦。

运行期实现

运行期做的话,可以在 render 里拿到虚拟DOM子节点,遍历,找到自定义的标签,然后特殊处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值