mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-20 23:22:05 +08:00
refactor(TraceTree): replace useEffect with useMemo for usedTime calculation
Use useMemo to optimize performance by avoiding unnecessary recalculations and state updates fix: Error: Calling setState synchronously within an effect can trigger cascading renders
This commit is contained in:
parent
254051cf62
commit
51dcdf94fb
@ -1,7 +1,8 @@
|
|||||||
import { TraceModal } from '@renderer/trace/pages/TraceModel'
|
import { TraceModal } from '@renderer/trace/pages/TraceModel'
|
||||||
import { Divider } from 'antd/lib'
|
import { Divider } from 'antd/lib'
|
||||||
|
import dayjs from 'dayjs'
|
||||||
import * as React from 'react'
|
import * as React from 'react'
|
||||||
import { useEffect, useState } from 'react'
|
import { useMemo, useState } from 'react'
|
||||||
|
|
||||||
import { Box, GridItem, HStack, IconButton, SimpleGrid, Text } from './Component'
|
import { Box, GridItem, HStack, IconButton, SimpleGrid, Text } from './Component'
|
||||||
import { ProgressBar } from './ProgressBar'
|
import { ProgressBar } from './ProgressBar'
|
||||||
@ -38,12 +39,10 @@ export const convertTime = (time: number | null): string => {
|
|||||||
const TreeNode: React.FC<TreeNodeProps> = ({ node, handleClick, treeData, paddingLeft = 2 }) => {
|
const TreeNode: React.FC<TreeNodeProps> = ({ node, handleClick, treeData, paddingLeft = 2 }) => {
|
||||||
const [isOpen, setIsOpen] = useState(true)
|
const [isOpen, setIsOpen] = useState(true)
|
||||||
const hasChildren = node.children && node.children.length > 0
|
const hasChildren = node.children && node.children.length > 0
|
||||||
const [usedTime, setUsedTime] = useState('--')
|
|
||||||
|
|
||||||
// 只在 endTime 或 node 变化时更新 usedTime
|
// 只在 endTime 或 node 变化时更新 usedTime
|
||||||
useEffect(() => {
|
const usedTime = useMemo(() => {
|
||||||
const endTime = node.endTime || Date.now()
|
const endTime = node.endTime || dayjs().valueOf()
|
||||||
setUsedTime(convertTime(endTime - node.startTime))
|
return convertTime(endTime - node.startTime)
|
||||||
}, [node])
|
}, [node])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user