用React实现一个HTML中上标、下标转换工具

用React实现一个HTML中上标、下标转换工具

前言

最近的项目中有个需求,需要能够在html中实现化学元素的表示,比如上标:SO2、O3、CH4、PM2.5、PM10,还有一些单位,比如:μg/m3、mg/m3等,这些上下标该如何表示呢?解决这个问题的方式有几种,其中一种是搜狗输入法中的数字范围中可以找到部分上标和下标,但是不是很全,其次就是下面要介绍的HTML中的<sub>、和<sup>标签。

HTML中的sub、sup标签

<sup>标签可定义上标文本;<sub>标签可定义下标文本。

在React中的使用

既然通过<sup>标签和<sub>就可以定义上下标文本,那在React中如何方便的使用呢?这里想到了封装一个简单的React组件来方便使用。

首先定义好一个数据结构:

const INDICES = {
    PM2_5: {
        shows: [{ c: 'PM', t: 'n' }, { c: '2.5', t: 'sub' }],
        units: [{ c: 'μg/m', t: 'n' }, { c: '3', t: 'sup' }]
    },
    PM10: {
        shows: [{ c: 'PM', t: 'n' }, { c: '10', t: 'sub' }],
        units: [{ c: 'μg/m', t: 'n' }, { c: '3', t: 'sup' }]
    },
    SO2: {
        shows: [{ c: 'SO', t: 'n' }, { c: '2', t: 'sub' }],
        units: [{ c: 'μg/m', t: 'n' }, { c: '3', t: 'sup' }]
    },
    NO2: {
        shows: [{ c: 'NO', t: 'n' }, { c: '2', t: 'sub' }],
        units: [{ c: 'μg/m', t: 'n' }, { c: '3', t: 'sup' }]
    },
    O3: {
        show: 'O3',
        units: [{ c: 'μg/m', t: 'n' }, { c: '3', t: 'sup' }]
    },
    CO: {
        show: 'CO',
        shows: [{ c: 'CO', t: 'n' }],
        units: [{ c: 'mg/m', t: 'n' }, { c: '3', t: 'sup' }]
    }
};

封装组件:
思路很简单,就是根据传入组件中的参数进行判断,遇到t==='sub'的就转换为<sub>标签,遇到't===sup'的就转换为<sup>标签。

import React, { Component } from 'react';

class ConvertScriptTool extends Component {
    render() {
        const { data= [] } = this.props;
        return (<span>
            {
                data.map((item, index) => {
                    if(item.t === 'n') {
                        return item.c
                    }else if(item.t === 'sub') {
                        return <sub key={index}>{item.c}</sub>
                    }else if(item.t === 'sup') {
                        return <sup key={index}>{item.c}</sup>
                    }else {
                        return null
                    }
                })
            }
        </span>)
    }
}

export default ConvertScriptTool;

用法如下:

PM2.5:

<ConvertScriptTool data={INDICES['PM2_5'].shows} /> 

SO2:

<ConvertScriptTool data={INDICES['SO2'].shows} /> 

下面的是我的公众号二维码图片,欢迎关注。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值