import React, { useState, useEffect, useRef } from 'react'; import { Box, Flex } from '@chakra-ui/react'; import type { BoxProps } from '@chakra-ui/react'; import MyIcon from '@fastgpt/web/components/common/Icon'; interface Props extends BoxProps { externalTrigger?: Boolean; } const SideBar = (e?: Props) => { const { w = ['100%', '0 0 250px', '0 0 250px', '0 0 270px', '0 0 290px'], children, externalTrigger, ...props } = e || {}; const [isFolded, setIsFolded] = useState(false); // 保存上一次折叠状态 const preFoledStatus = useRef(false); useEffect(() => { if (externalTrigger) { setIsFolded(true); preFoledStatus.current = isFolded; } else { // @ts-ignore setIsFolded(preFoledStatus.current); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [externalTrigger]); return ( div': { visibility: 'visible', opacity: 1 } }} {...props} > setIsFolded(!isFolded)} > {children} ); }; export default SideBar;