import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react' import styles from './index.module.scss' import TopCom from '@/components/TopCom' import classNames from 'classnames' import { A4LookType } from '../type' type Props = { info: A4LookType closeFu: () => void } function A4look({ info, closeFu }: Props) { const [topArr, setTopArr] = useState([]) const [topAc, setTopAc] = useState('') useEffect(() => { setTimeout(() => { if (sollrRef.current) sollrRef.current.scrollTo({ top: 0, behavior: 'smooth' }) }, 100) }, [topAc]) const txtChange = useCallback((val: string, key: 'txt' | 'flag') => { if (key === 'txt') { let txt = '' if (val) { let obj = JSON.parse(val) txt = obj.txtArr[0].txt } return txt } else if (key === 'flag') { const obj = JSON.parse(val) return !obj.isTxtFlag as boolean } }, []) useEffect(() => { let { introRtf, teamRtf, infoRtf } = info let introRtfFlag = txtChange(introRtf, 'flag') let teamRtfFlag = txtChange(teamRtf, 'flag') let infoRtfFlag = txtChange(infoRtf, 'flag') let arr: string[] = [] if (introRtfFlag) arr.push('课程简介') if (teamRtfFlag) arr.push('教师简介') if (infoRtfFlag) arr.push('预约须知') setTopArr(arr) if (introRtfFlag) setTopAc('课程简介') else if (teamRtfFlag) setTopAc('教师简介') else if (infoRtfFlag) setTopAc('预约须知') }, [info, txtChange]) const sollrRef = useRef(null) const txtRes = useMemo(() => { const obj = { 课程简介: txtChange(info.introRtf, 'txt'), 教师简介: txtChange(info.teamRtf, 'txt'), 预约须知: txtChange(info.infoRtf, 'txt') } return Reflect.get(obj, topAc) }, [info, topAc, txtChange]) return (
{topArr.map(item => (
setTopAc(item)} className={classNames('A4Ltrow', topAc === item ? 'A4LtrowAc' : '')} key={item} > {item}
))}
{txtRes ? (
) : null}
) } const MemoA4look = React.memo(A4look) export default MemoA4look