javascript - 如何任意变换组件渲染输出

标签 javascript reactjs text transform redux

我正在编写一个电子应用程序,它可以像 Hyperterm 一样进行扩展。可以延长。我正在尝试找到一个系统,允许在屏幕上渲染某些文本之前对其进行任意转换。

假设我有一个简单地呈现为跨度的组件文本。

const Text = ({text}) => <span>{text}</span>

但根据文本包含的内容,插件可能会改变它的外观。也许某些插件会:

  • 将网址替换为 <a>标签
  • 粗体文本被 ** 包围, Markdown
  • 为某些重要单词着色
  • 替换:emoji:<img>

我有哪些选择可以实现这一目标?这是高阶组件可以帮助解决的问题吗?或者我可以更改 Text组件,以便它可以接受某种形式的转换元数据并知道要渲染为什么 HTML?

最佳答案

如果安全且适合您的用例,您可以将 dangerouslySetInnerHTML 与解析函数一起使用

const parseText = text => ...
const createMarkup = text => ({__html: parseText(text)})
const Text = ({text}) => <span dangerouslySetInnerHTML={createMarkup(text)} />

关于javascript - 如何任意变换组件渲染输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39338894/

相关文章:

javascript 模板引擎保持对文本框等的关注?

reactjs - 从reducer hook保存到localStorage

text - emacs 字符串插入矩形数字向量?

iphone - 处理 iPhone/iPad 上使用 CGPDFScanner 获得的 PDF 文本矩阵 (Tm) 值

javascript - jQuery 用选定的一个分隔 div

javascript - 球碰撞不起作用

javascript - 库包装器 React 组件,如何使用 Enzyme 查找 DOM 子项?

css - 如何在 React App 中使用::before CSS 伪选择器修改 Font Awesome 图标?

android - 我可以像日文一样垂直书写文本吗?

javascript - 在触摸设备上滚动的全屏谷歌地图