Javascript React textarea通过API保存到数据库PUT删除换行符

Javascript React textarea通过API保存到数据库PUT删除换行符,javascript,jquery,html,api,reactjs,Javascript,Jquery,Html,Api,Reactjs,我正在使用$ajax在我的react应用程序中将注释放入数据库。注释从文本区域保存,没有问题,并在我的应用程序中呈现,但没有换行符 根据这个线程,react故意删除换行符。在前端有办法解决这个问题吗 我尝试了几种不同的方法(大多数都是这个方法的一个版本):用\\\n替换\\\n;将\n替换为br(不仅不起作用,而且在文本区域中呈现html br元素时也很难看);在PUT上使用encodeURI,在GET上使用decodeURI。这些尝试的解决方案导致我的API PUT请求出现错误,因为它无法保存

我正在使用
$ajax
在我的react应用程序中将注释放入数据库。注释从文本区域保存,没有问题,并在我的应用程序中呈现,但没有换行符

根据这个线程,react故意删除换行符。在前端有办法解决这个问题吗

我尝试了几种不同的方法(大多数都是这个方法的一个版本):用
\\\n
替换
\\\n
;将
\n
替换为
br
(不仅不起作用,而且在文本区域中呈现html br元素时也很难看);在PUT上使用
encodeURI
,在
GET上使用
decodeURI
。这些尝试的解决方案导致我的API PUT请求出现错误,因为它无法保存编码URI中的特殊字符,而
\\\n
中的反斜杠被视为前斜杠,从而导致API调用获得错误的搜索路径(如
API/comment/12312/Thisisa/nComment

组件相当大,但这是textarea渲染部分:

var resourceInputValue = this.state.resourceValue;
var commentInputValue = this.state.commentValue;
(……)

尝试在发送文本之前运行,并在后端对其进行解码

<div className="detailsForms">
        <form>
          <textarea type="text" name="comment" className="commentForm" placeholder="Comment" defaultValue={commentInputValue} onChange={this.changeComment}/><img src="img/cancel.png" className="clearComment" onClick={this.clearComment}/>
        </form>
        <div className="formButtonDiv">
          <button className="formButton" type="button" onClick={this.putComment}>Add Comment</button>
        </div>

      </div>
getInitialState: function(){
    return {
      commentValue: this.props.orderProps.comment
    }
  },

changeComment: function(event){
    this.setState({
      commentValue: event.target.value
    });

    if(event.target.value === "") {
      this.setState({
        commentValue: null
      });
    }
  },

  putComment: function(){

    $.ajax({
      type: "PUT",
      url: apiUrl + 'api/OrderComment/' + this.state.detailsId + "/" + this.state.commmentValue,
      beforeSend: function (xhr) {
        xhr.setRequestHeader("Authorization", 'Bearer ' + token);
      },
      success: function () {
        document.getElementsByClassName("formButton")[1].className += " formButtonSuccess";
        document.getElementsByClassName("formButton")[1].innerHTML = "Done!";
        clearInterval(timer);
        ajaxCallOrders();
      },
      done: function(){

      }
    }).fail(function (_d) {
      document.getElementsByClassName("formButton")[1].className += " formButtonFail";
      document.getElementsByClassName("formButton")[1].innerHTML = "Try again";
    });
  },