diff --git a/packages/ava-react/package.json b/packages/ava-react/package.json
index 96114137d..d943494c9 100644
--- a/packages/ava-react/package.json
+++ b/packages/ava-react/package.json
@@ -1,6 +1,6 @@
{
"name": "@antv/ava-react",
- "version": "3.1.9",
+ "version": "3.1.10-beta.0",
"description": "React components of AVA.",
"author": {
"name": "AntV",
diff --git a/packages/ava-react/src/NarrativeTextVis/phrases/Phrase.tsx b/packages/ava-react/src/NarrativeTextVis/phrases/Phrase.tsx
index d2080a542..4003e31f7 100644
--- a/packages/ava-react/src/NarrativeTextVis/phrases/Phrase.tsx
+++ b/packages/ava-react/src/NarrativeTextVis/phrases/Phrase.tsx
@@ -1,9 +1,8 @@
-import React from 'react';
+import React, { useState, useEffect } from 'react';
import { Tooltip, TooltipProps } from 'antd';
import { isTextPhrase, isEntityPhrase, isEscapePhrase, isFormulaPhrase } from '@antv/ava';
import { isFunction, kebabCase, isEmpty, isNil } from 'lodash';
-import katex from 'katex';
import { NTV_PREFIX_CLS } from '../constants';
import { Entity, Bold, Italic, Underline, FormulaWrapper } from '../styled';
@@ -13,9 +12,32 @@ import { PhraseDescriptor, presetPluginManager } from '../chore/plugin';
import { getThemeColor } from '../theme';
import type { ReactNode } from 'react';
-import type { PhraseSpec, EntityPhraseSpec, CustomPhraseSpec } from '@antv/ava';
+import type { PhraseSpec, EntityPhraseSpec, CustomPhraseSpec, FormulaPhraseSpec } from '@antv/ava';
import type { ThemeStylesProps, ExtensionProps, PhraseEvents } from '../types';
+const FormulaPhrase: React.FC<{
+ spec: FormulaPhraseSpec;
+}> = ({ spec }) => {
+ const [katex, setKatex] = useState(null);
+ useEffect(() => {
+ import('katex').then(setKatex);
+ }, []);
+ return katex ? (
+
+ ) : null;
+};
+
type PhraseProps = ThemeStylesProps &
ExtensionProps &
PhraseEvents & {
@@ -160,21 +182,7 @@ export const Phrase: React.FC = ({
// use katex to render formula
// 使用 katex 渲染公式
- if (isFormulaPhrase(phrase))
- return (
-
- );
+ if (isFormulaPhrase(phrase)) return ;
const descriptor = pluginManager?.getPhraseDescriptorBySpec(phrase);
if (descriptor) {