【发布时间】:2015-11-16 03:56:22
【问题描述】:
我正在显示存储在数据库中的文本。数据来自 firebase 作为字符串(包括换行符)。为了使其显示为 HTML,我最初做了以下操作:
<p className="term-definition"
dangerouslySetInnerHTML={{__html: (definition.definition) ? definition.definition.replace(/(?:\r\n|\r|\n)/g, '<br />') : ''}}></p>
这很好用。但是,还有一个附加功能。用户可以输入[word],这个词就会链接起来。为了实现这一点,我创建了以下函数:
parseDefinitionText(text){
text = text.replace(/(?:\r\n|\r|\n)/g, '<br />');
text = text.replace(/\[([A-Za-z0-9'\-\s]+)\]/, function(match, word){
// Convert it to a permalink
return (<Link to={'/terms/' + this.permalink(word) + '/1'}>{word}</Link>);
}.bind(this));
return text;
},
我省略了 this.permalink 方法,因为它不相关。如您所见,我正在尝试返回从 react-router 导入的 <Link> 组件。但是,由于它是原始 HTML,dangerouslySetInnerHTML 不再正常工作。
所以我有点卡在这一点上。我可以做些什么来格式化内部文本并创建链接?
【问题讨论】:
标签: javascript reactjs react-router react-router-component