div模拟实现textarea

        最近在开发一个公众号项目,需要实现简单的聊天功能,如下图:


        由于textarea不能自适应高度,而且内容过多时还有滚动条,很不美观,于是开始百度各种方法。。。

        发现有介绍到用块级元素(如div)模拟实现textarea的说法,于是试了一把,发现确实可用,只是明明点击发送按钮后将内容置为空,可是输入框里还是有显示之前发送的内容,实现代码如下,望大神指导!!!


1、页面加载时:
componentDidMount() {

      let _self = this;

        // 监听输入框内容

        document.getElementById("contentDiv").addEventListener("DOMSubtreeModified",             function(e) {

                _self._getContent(e)

        }, false);

    }



2、获取输入框内容:

    _getContent(e){

        if(e.target.data){

            this.setState({

                content: e.target.data,

                disabled: false,        //按钮是否禁用

          });

        }else{

            this.setState({

                content: '',

                disabled: true,

            });

        }

    }

3、页面

render(){

    return(

        <div

            id='contentDiv'

            style={{

                    width:'14.3rem',minHeight:'1.8rem',borderRadius:17,

                    backgroundColor:'#F7F7F7',color:'#0F0F0F',fontSize:'0.7rem',

                    paddingLeft:12,paddingRight:12,paddingBottom:6,paddingTop:6

                }}

              contentEditable="true"//模拟输入框

               value={this.state.content}

        />

    )

}


        以上代码,亲测输入和发送功能ok,就是发送后输入框的内容明明已设置清空,render处打印content,也是空,但是输入框里确有内容,实在搞不定,碍于项目工期紧,又改用了antd-mobile 的TextareaItem组件,总算解决了问题,但是真的很想知道div模拟textarea的完美解决方案,望友友们不吝赐教!!!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,067评论 0 2
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,895评论 1 45
  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 2,624评论 0 7
  • 前端开发面试题 <a name='preface'>前言</a> 只看问题点这里 看全部问题和答案点这里 本文由我...
    自you是敏感词阅读 826评论 0 3
  • 高度自适应的 textarea 背景介绍 正如我们所知道的 textarea 是一个行内块元素 display: ...
    岑早早咯阅读 8,130评论 1 3