0

我无法检测到来自文本区域的换行符。该标准.replace('↵', '\n')不起作用,因为在我调用this.state.note返回字符时已经尊重了。

从控制台:

> this.state {flashMessage: "", note: "one potato ↵two potato↵three potato↵four", showShareModal: false, isEditing: true}

> this.state.note "one potato two potato three potato four"

我尝试使用 encoudeURI 并在字符串中搜索 '\n' - 两者都没有运气。

有没有办法获得原始格式this.state.note

4

2 回答 2

1

React 将自动替换'↵'为,'\n'因此如果您的 textarea 受到控制,则组件的状态应该包含包含字符的文本区域的文本'\n'。发送(POST)和存储文本不应删除'\n'字符,因此据我从您显示的代码中可以看出,'\n'字符仍然存在。

我怀疑问题只是 HTML 没有'\n'用作其换行符,因此新行没有显示在页面上。相反,HTML 使用<br/>. 最好将它们分解note成单独的<p>元素。您可以这样做:

const splitNote = this.state.note.split('\n').map(e => <p>{ e }</p>);

您也可以拆分note<span>元素,然后将它们放入<div>with 中{display: flex; flex-flow: column;}。由你决定。

笔记:

如果由于某种原因您的'\n'角色在某处被删除,并且没有合理的方法来阻止这种情况,您可以在替换'\n'发生'\\n'之前替换为。但我认为这不太可能发生。

于 2018-08-24T18:10:11.783 回答
0

原来我能够使用encodeURI(this.state.note). 因为我的最终目标是将其传递给mailto:链接,所以编码的返回语句会完美地转换为 %0A。

于 2018-08-24T23:31:28.650 回答