react实现仿微信聊天输入框

react实现仿微信聊天输入框

  • 实现原理:
    • 利用H5提供的元素可编辑属性 contentEditable 使普通的html元素具有和输入框一样的编辑功能
  • 其他实现方式(较复杂):
    • 使用textarea作为输入框
    • 准备一个与textarea等宽的pre元素,用于计算内容高度,需要设置css {word-break:break-all} 否则可能不会自动换行
    • 输入的同时将value写入pre,然后获取pre的scrollHeight,将其赋给textare的height,以此实现textarea随内容自动调整大小
    • emoji输入:由于无法在textarea内直接渲染图片,普遍的做法是使用[-]这种格式的字符代替emoji,在使用富文本时通过正则匹配[-],替换成对应的emoji图片进行渲染
  • 缺陷
    • 需要直接操作dom,不符合MV*主义核心价值观
    • 依赖h5新属性
  • 使用场景
    • 即时通讯
    • 留言、评论
  • git仓库地址:https://github.com/DarthVaderrr/richTextInput.git

打开方式

截图

主要代码

import React, {
    Component, Fragment } from 'react';
import {
    Icon } from 'antd';//使用了一个antd的icon,如果你的项目没有使用antd,可以自己写个按钮样式,无须引入
import {
    OutterContainer, InputOutter, BtnContainer, SendBtn, EmojiTab } from './style' //使用styled-compoents自定义的样式组件,这样做可以避免组件里出现过多css代码
export default class HyperTextInput extends Component {
   
    constructor(props) {
   
        super(props)
        this.state = {
   
            textareaH: '8vw',
            hyperText:"",
            showEmojiTab: false,
            emojiList: [1, 2, 3, 4, 5, 6
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值