11import { useQuery , useQueryClient } from "@tanstack/react-query"
22import mermaid from "mermaid"
3- import { useEffect , useState } from "react"
3+ import { useEffect , useRef } from "react"
44import { queryKey } from "src/constants/queryKey"
55import useScheme from "src/hooks/useScheme"
66
@@ -27,7 +27,7 @@ const waitForMermaid = (interval = 100, timeout = 5000) => {
2727 } )
2828}
2929const useMermaidEffect = ( ) => {
30- const [ memoMermaid , setMemoMermaid ] = useState < Map < number , string > > ( new Map ( ) )
30+ const memoMermaidRef = useRef < Map < number , string > > ( new Map ( ) )
3131
3232 const { data, isFetched } = useQuery ( {
3333 queryKey : queryKey . scheme ( ) ,
@@ -54,9 +54,9 @@ const useMermaidEffect = () => {
5454 element . tagName === "CODE" ? element . parentElement ?? element : element
5555 const sourceText = element . textContent || ""
5656
57- if ( memoMermaid . get ( i ) !== undefined ) {
57+ if ( memoMermaidRef . current . get ( i ) !== undefined ) {
5858 const svg = await mermaid
59- . render ( "mermaid" + i , memoMermaid . get ( i ) || "" )
59+ . render ( "mermaid" + i , memoMermaidRef . current . get ( i ) || "" )
6060 . then ( ( res ) => res . svg )
6161 target . animate (
6262 [
@@ -72,7 +72,7 @@ const useMermaidEffect = () => {
7272 const svg = await mermaid
7373 . render ( "mermaid" + i , sourceText )
7474 . then ( ( res ) => res . svg )
75- setMemoMermaid ( memoMermaid . set ( i , sourceText ) )
75+ memoMermaidRef . current . set ( i , sourceText )
7676 target . innerHTML = svg
7777 } )
7878 await Promise . all ( promises )
0 commit comments