index.tsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import React, { useEffect, useState } from 'react'
  2. import styles from './index.module.scss'
  3. import { useHistory } from 'react-router-dom'
  4. function Scenes() {
  5. const [activeTab, setActiveTab] = useState('全部')
  6. const [sceneData2, setSceneData2] = useState<{ title: string; img: string; code: string; region: string; }[]>([])
  7. const history = useHistory()
  8. const goToScene = (code: string) => {
  9. history.push(`/scene?code=${code}`)
  10. }
  11. useEffect(() => {
  12. if (activeTab === '全部') {
  13. setSceneData2(sceneData)
  14. } else {
  15. setSceneData2(sceneData.filter(item => item.region === activeTab))
  16. }
  17. }, [activeTab])
  18. return (
  19. <div className={styles.scenes}>
  20. <div className='top'>
  21. <div className='logo'><img src={require('@/assets/img/sceneLogo.png')} alt="" /></div>
  22. <div className="title">十大场景</div>
  23. <div className="tab">
  24. <div className="label">区域:</div>
  25. <div className={`tabItem ${activeTab === '全部' ? 'active' : ''}`} onClick={() => setActiveTab('全部')}>全部</div>
  26. <div className={`tabItem ${activeTab === '室内' ? 'active' : ''}`} onClick={() => setActiveTab('室内')}>室内</div>
  27. <div className={`tabItem ${activeTab === '室外' ? 'active' : ''}`} onClick={() => setActiveTab('室外')}>室外</div>
  28. </div>
  29. </div>
  30. <div className='content'>{sceneData2.map((item) => (
  31. <div className="sceneCard" key={item.code} onClick={() => goToScene(item.code)}>
  32. <div className="pic"><img src={item.img} alt="" /></div>
  33. <div className="text">{item.title}</div>
  34. </div>
  35. ))} </div>
  36. </div>
  37. )
  38. }
  39. const MemoScenes = React.memo(Scenes)
  40. export default MemoScenes