发布了 npm 包 —— 最简单的 React Native LaTeX 公式渲染组件
#移动端开发上一篇 blog 中,我实现了在 Webview 中渲染 LaTeX 公式,但是在实际使用中,创建大量的 Webview 用于渲染 LaTeX 公式的性能并不好,导致在滚动时/切换到一个有大量公式的页面时 会出现卡顿的情况。
因此,我开发了一个基于 react-native-svg 的 npm 包,叫做 react-native-latex-text,它支持自动匹配公式并将 react-native 自带的 Text 组件与 Latex 公式混排,性能更强。
核心思路
由于 MathJax 依赖 DOM 环境,我们需要使用 MathJaxRenderer 组件在根节点创建一个隐藏的 1*1 的 WebView 组件,用于加载 MathJax 库和渲染公式。渲染完成后,WebView 内部通过 postMessage 将 svg-xml 字符串返回给 React Native,并使 react-native-svg 组件实现高性能渲染。
因此,这种渲染方式不依赖任何原生组件,可以直接在 Expo Go 中运行。
MathText 组件通过正则表达式将文本中的公式部分提取出来,分别渲染并计算行高,最后将普通文本与渲染后的公式拼接起来。
渲染效果
使用方法
初始化:
在项目的根节点(比如最外层的 _layout.tsx)中引入 MathJaxRenderer 组件,并用其 ref 初始化全局 MathRenderer:
|
|
渲染公式:
在项目的任意位置,直接使用 MathText 组件渲染带公式的文本:
|
|
快速开始
前往 Github 仓库 react-native-latex-text 查看详细文档和示例代码
前往 npm 仓库 react-native-latex-text 安装该包。