index.tsx 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import React, { useCallback, useMemo, useState } from 'react'
  2. import styles from './index.module.scss'
  3. import { VisitHotDataType } from '@/types'
  4. import classNames from 'classnames'
  5. import LazyImg from '@/components/LazyImg'
  6. import { baseURL } from '@/utils/http'
  7. type Props = {
  8. closeFu: () => void
  9. data: VisitHotDataType
  10. name: string
  11. }
  12. function Hot2({ closeFu, data, name }: Props) {
  13. // 底部选中
  14. const [flooInd, setFlooInd] = useState(0)
  15. const acData = useMemo(() => {
  16. return data[flooInd] || []
  17. }, [data, flooInd])
  18. // 点击切换底部
  19. const flooIndFu = useCallback((ind: number) => {
  20. const dom = document.querySelector('.h2TuWen')
  21. if (dom) dom.scrollTop = 0
  22. setFlooInd(ind)
  23. }, [])
  24. return (
  25. <div id='HotOpCss' className={styles.Hot2}>
  26. <div className='h2Main' style={{ backgroundImage: `url(${baseURL}visit/hot2bj.png)` }}>
  27. {/* 标题 */}
  28. <div className='h2Titele'>
  29. <img src={`${baseURL}visit/img-yun1.png`} alt='' />
  30. <img className='h2TimgR' src={`${baseURL}visit/img-yun2.png`} alt='' />
  31. {name}
  32. </div>
  33. <div className={classNames('h2TuWen', data.length <= 1 ? 'h2TuWenDuo' : '')}>
  34. {/* 图片 */}
  35. {acData.type && acData.type === 'model' ? (
  36. <div className='H2model'>
  37. <iframe
  38. title={name}
  39. src={`${baseURL}modelLoding/model.html?u=${acData.imgArr[0]}`}
  40. frameBorder='0'
  41. ></iframe>
  42. </div>
  43. ) : (
  44. acData.imgArr.map((url, index) => <LazyImg src={baseURL + url} key={index} />)
  45. )}
  46. {/* 文字 */}
  47. <div className='h2txt' dangerouslySetInnerHTML={{ __html: acData.txt }}></div>
  48. </div>
  49. {/* 底部 */}
  50. {data.length <= 1 ? null : (
  51. <div className='h2FlooBox'>
  52. <div className='h2Floo'>
  53. {data.map((item, index) => (
  54. <div
  55. onClick={() => flooIndFu(index)}
  56. className={classNames(
  57. 'h2FlooRow sizeNo',
  58. flooInd === index ? 'h2FlooRowShow' : ''
  59. )}
  60. key={index}
  61. >
  62. {item.name}
  63. </div>
  64. ))}
  65. </div>
  66. </div>
  67. )}
  68. {/* 返回按钮 */}
  69. <div className='h2Back hoverD'>
  70. <img onClick={closeFu} src={`${baseURL}visit/back.png`} alt='' />
  71. </div>
  72. </div>
  73. <div className='h2Right' onClick={closeFu}></div>
  74. </div>
  75. )
  76. }
  77. const MemoHot2 = React.memo(Hot2)
  78. export default MemoHot2