Как оптимизировать результаты вычислений с помощью useMemo?
Есть компонент, который делает две дорогие по времени операции собирает на лету svg в виде html литерала и парсит этот литерал в реакт компонент. Хочу оптимизировать его с помощью useMemo но не понимаю как, не очень уверенно пока пользуюсь этих хуком. :(
import {FC, useState, useEffect } from 'react'
import parse from 'html-react-parser'
import { getRenderAsString } from './svg-data.builder'
import { ITartanPattern } from './types'
type JSXVariants = JSX.Element | JSX.Element[] | string
const parseSVG = async (data:any):Promise<JSXVariants> => {
return new Promise( resolve => {
const parsedData = parse(data)
resolve(parsedData)
})
}
const TartanPattern:FC<ITartanPattern> = ({colors}) => {
const [svgData, setSvgData] = useState('')
const [element, setElement] = useState<JSXVariants>('')
useEffect(() => {
const fetchData = async () => {
// expensive content generation
const newSvgData = await getRenderAsString(colors)
setSvgData(newSvgData)
}
fetchData()
}, [colors])
useEffect(() => {
const fetchData = async () => {
// expensive parsing
const newElement = await parseSVG(svgData)
setElement(newElement)
}
fetchData()
}, [svgData])
return (
<>
{element}
</>
)
}
export default TartanPattern