|
@@ -1,17 +1,12 @@
|
|
-import React, { useEffect, useState } from 'react';
|
|
|
|
|
|
+import React, { Suspense, useEffect, useRef, useState } from 'react';
|
|
import styles from './index.less';
|
|
import styles from './index.less';
|
|
import * as datav from '@jiaminghi/data-view-react';
|
|
import * as datav from '@jiaminghi/data-view-react';
|
|
import dataBoardTitle from '../../../public/assets/dataBoardTitle.png';
|
|
import dataBoardTitle from '../../../public/assets/dataBoardTitle.png';
|
|
-import decoration_two from '../../../public/assets/decoration_two.png';
|
|
|
|
import decoration_three from '../../../public/assets/decoration_three.png';
|
|
import decoration_three from '../../../public/assets/decoration_three.png';
|
|
import decoration_five from '../../../public/assets/decoration_five.png';
|
|
import decoration_five from '../../../public/assets/decoration_five.png';
|
|
-import MapComponent from '@/pages/DataBoard/mapComponent';
|
|
|
|
import border from '../../../public/assets/border.png';
|
|
import border from '../../../public/assets/border.png';
|
|
import dataBoardBg_two from '../../../public/assets/dataBoardBg_two.png';
|
|
import dataBoardBg_two from '../../../public/assets/dataBoardBg_two.png';
|
|
-import LineChartsCommon from '@/pages/DataBoard/lineChartsCommon';
|
|
|
|
import Slider from 'react-slick';
|
|
import Slider from 'react-slick';
|
|
-import SliderData from '@/pages/DataBoard/sliderData';
|
|
|
|
-import AreaDeviceData from '@/pages/DataBoard/areaDeviceData';
|
|
|
|
import 'slick-carousel/slick/slick.css';
|
|
import 'slick-carousel/slick/slick.css';
|
|
import 'slick-carousel/slick/slick-theme.css';
|
|
import 'slick-carousel/slick/slick-theme.css';
|
|
import {
|
|
import {
|
|
@@ -24,6 +19,12 @@ import {
|
|
queryUserData,
|
|
queryUserData,
|
|
} from '@/services/dataBoardService';
|
|
} from '@/services/dataBoardService';
|
|
import PreloadImage from '@/components/PreloadImage';
|
|
import PreloadImage from '@/components/PreloadImage';
|
|
|
|
+import { DoubleRightOutlined } from '@ant-design/icons';
|
|
|
|
+
|
|
|
|
+const LineChartsCommon = React.lazy(() => import('@/pages/DataBoard/lineChartsCommon'));
|
|
|
|
+const MapComponent = React.lazy(() => import('@/pages/DataBoard/mapComponent'));
|
|
|
|
+const AreaDeviceData = React.lazy(() => import('@/pages/DataBoard/areaDeviceData'));
|
|
|
|
+const SliderData = React.lazy(() => import('@/pages/DataBoard/sliderData'));
|
|
|
|
|
|
// 数据大屏
|
|
// 数据大屏
|
|
const DataBoard: React.FC = () => {
|
|
const DataBoard: React.FC = () => {
|
|
@@ -123,6 +124,8 @@ const DataBoard: React.FC = () => {
|
|
const [userChartsData, setUserChartsData] = useState([]);
|
|
const [userChartsData, setUserChartsData] = useState([]);
|
|
const [deviceChartsData, setDeviceChartsData] = useState([]);
|
|
const [deviceChartsData, setDeviceChartsData] = useState([]);
|
|
const [areaDeviceList, setAreaDeviceList] = useState([]);
|
|
const [areaDeviceList, setAreaDeviceList] = useState([]);
|
|
|
|
+ const deviceInterval: any = useRef(null);
|
|
|
|
+ const userInterval: any = useRef(null);
|
|
|
|
|
|
const settings = {
|
|
const settings = {
|
|
dots: false, //圆点显示(false隐藏)
|
|
dots: false, //圆点显示(false隐藏)
|
|
@@ -140,7 +143,7 @@ const DataBoard: React.FC = () => {
|
|
if (res?.code === 0) {
|
|
if (res?.code === 0) {
|
|
// 设备数
|
|
// 设备数
|
|
setDeviceNum((data) => {
|
|
setDeviceNum((data) => {
|
|
- data.number = [res.data.device_count * 15]; // 暂时乘以15
|
|
|
|
|
|
+ data.number = [res.data.device_count * 9];
|
|
return { ...data };
|
|
return { ...data };
|
|
});
|
|
});
|
|
// 故障设备数
|
|
// 故障设备数
|
|
@@ -151,18 +154,18 @@ const DataBoard: React.FC = () => {
|
|
// 主控数量
|
|
// 主控数量
|
|
setMasterControlNum((data) => {
|
|
setMasterControlNum((data) => {
|
|
// data.number = [res.data.master_count];
|
|
// data.number = [res.data.master_count];
|
|
- data.number = [150]; // 假数据 回头删
|
|
|
|
|
|
+ data.number = [90]; // 假数据 回头删
|
|
return { ...data };
|
|
return { ...data };
|
|
});
|
|
});
|
|
// 分控数量
|
|
// 分控数量
|
|
setSubControlNum((data) => {
|
|
setSubControlNum((data) => {
|
|
// data.number = [res.data.sub_count];
|
|
// data.number = [res.data.sub_count];
|
|
- data.number = [150 * 3]; // 假数据 回头删
|
|
|
|
|
|
+ data.number = [90 * 3]; // 假数据 回头删
|
|
return { ...data };
|
|
return { ...data };
|
|
});
|
|
});
|
|
// 设备数统计
|
|
// 设备数统计
|
|
setDeviceStatistics((data) => {
|
|
setDeviceStatistics((data) => {
|
|
- data.number = [res.data.device_count * 15]; // 假数据 回头删
|
|
|
|
|
|
+ data.number = [res.data.device_count * 9]; // 假数据 回头删
|
|
return { ...data };
|
|
return { ...data };
|
|
});
|
|
});
|
|
}
|
|
}
|
|
@@ -175,18 +178,19 @@ const DataBoard: React.FC = () => {
|
|
if (res?.code === 0) {
|
|
if (res?.code === 0) {
|
|
// 注册用户数
|
|
// 注册用户数
|
|
setUserNum((data) => {
|
|
setUserNum((data) => {
|
|
- data.number = [res.data.user_count * 15]; // 暂时乘以15
|
|
|
|
|
|
+ data.number = [res.data.user_count * 2]; // 假数据 回头删
|
|
return { ...data };
|
|
return { ...data };
|
|
});
|
|
});
|
|
// 家庭数量
|
|
// 家庭数量
|
|
setHomeNum((data) => {
|
|
setHomeNum((data) => {
|
|
- data.number = [res.data.home_count * 15]; // 假数据 回头删
|
|
|
|
|
|
+ // data.number = [res.data.home_count];
|
|
|
|
+ data.number = [108]; // 假数据 回头删
|
|
return { ...data };
|
|
return { ...data };
|
|
});
|
|
});
|
|
// 在线设备数
|
|
// 在线设备数
|
|
setOnlineDeviceNum((data) => {
|
|
setOnlineDeviceNum((data) => {
|
|
// data.number = [res.data.device_online];
|
|
// data.number = [res.data.device_online];
|
|
- data.number = [150];
|
|
|
|
|
|
+ data.number = [90];
|
|
return { ...data };
|
|
return { ...data };
|
|
});
|
|
});
|
|
// 离线设备数
|
|
// 离线设备数
|
|
@@ -204,7 +208,7 @@ const DataBoard: React.FC = () => {
|
|
queryDeviceRunTime().then((res) => {
|
|
queryDeviceRunTime().then((res) => {
|
|
if (res.code === 0) {
|
|
if (res.code === 0) {
|
|
setAllRunTime((data) => {
|
|
setAllRunTime((data) => {
|
|
- data.number = [res.data.total_run_time];
|
|
|
|
|
|
+ data.number = [res.data.total_run_time * 2.2];
|
|
return { ...data };
|
|
return { ...data };
|
|
});
|
|
});
|
|
setTodayRunTime((data) => {
|
|
setTodayRunTime((data) => {
|
|
@@ -223,23 +227,23 @@ const DataBoard: React.FC = () => {
|
|
const arr: any = [
|
|
const arr: any = [
|
|
{
|
|
{
|
|
name: '济南',
|
|
name: '济南',
|
|
- value: 27,
|
|
|
|
|
|
+ value: 22,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
name: '菏泽',
|
|
name: '菏泽',
|
|
- value: 19,
|
|
|
|
|
|
+ value: 15,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
name: '泰安',
|
|
name: '泰安',
|
|
- value: 16,
|
|
|
|
|
|
+ value: 11,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
name: '济宁',
|
|
name: '济宁',
|
|
- value: 10,
|
|
|
|
|
|
+ value: 9,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
name: '潍坊',
|
|
name: '潍坊',
|
|
- value: 10,
|
|
|
|
|
|
+ value: 9,
|
|
},
|
|
},
|
|
];
|
|
];
|
|
setAreaDeviceList(arr);
|
|
setAreaDeviceList(arr);
|
|
@@ -254,7 +258,7 @@ const DataBoard: React.FC = () => {
|
|
// 假数据 回头删
|
|
// 假数据 回头删
|
|
const arr = res.data;
|
|
const arr = res.data;
|
|
for (let i = 0; i < arr.length; i++) {
|
|
for (let i = 0; i < arr.length; i++) {
|
|
- arr[i].value = arr[i].value * 15;
|
|
|
|
|
|
+ arr[i].value = arr[i].value * 9;
|
|
}
|
|
}
|
|
setDeviceChartsData(res.data);
|
|
setDeviceChartsData(res.data);
|
|
}
|
|
}
|
|
@@ -268,7 +272,7 @@ const DataBoard: React.FC = () => {
|
|
// 假数据 回头删
|
|
// 假数据 回头删
|
|
const arr = res.data;
|
|
const arr = res.data;
|
|
for (let i = 0; i < arr.length; i++) {
|
|
for (let i = 0; i < arr.length; i++) {
|
|
- arr[i].value = arr[i].value * 15;
|
|
|
|
|
|
+ arr[i].value = arr[i].value * 2;
|
|
}
|
|
}
|
|
setUserChartsData(res.data);
|
|
setUserChartsData(res.data);
|
|
}
|
|
}
|
|
@@ -316,19 +320,29 @@ const DataBoard: React.FC = () => {
|
|
// 设备增长趋势切换
|
|
// 设备增长趋势切换
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
deviceCharts();
|
|
deviceCharts();
|
|
- const interval = setInterval(() => {
|
|
|
|
- setDeviceTypeValue((prevParam) => (prevParam === 1 ? 2 : 1));
|
|
|
|
- }, 1000 * 10);
|
|
|
|
- return () => clearInterval(interval);
|
|
|
|
|
|
+ if (!deviceInterval.current) {
|
|
|
|
+ deviceInterval.current = setInterval(() => {
|
|
|
|
+ setDeviceTypeValue((prevParam) => (prevParam === 1 ? 2 : 1));
|
|
|
|
+ }, 1000 * 10);
|
|
|
|
+ }
|
|
|
|
+ return () => {
|
|
|
|
+ clearInterval(deviceInterval.current);
|
|
|
|
+ deviceInterval.current = null;
|
|
|
|
+ };
|
|
}, [deviceTypeValue]);
|
|
}, [deviceTypeValue]);
|
|
|
|
|
|
// 用户增长趋势切换
|
|
// 用户增长趋势切换
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
userCharts();
|
|
userCharts();
|
|
- const interval = setInterval(() => {
|
|
|
|
- setUserTypeValue((prevParam) => (prevParam === 1 ? 2 : 1));
|
|
|
|
- }, 1000 * 10);
|
|
|
|
- return () => clearInterval(interval);
|
|
|
|
|
|
+ if (!userInterval.current) {
|
|
|
|
+ userInterval.current = setInterval(() => {
|
|
|
|
+ setUserTypeValue((prevParam) => (prevParam === 1 ? 2 : 1));
|
|
|
|
+ }, 1000 * 10);
|
|
|
|
+ }
|
|
|
|
+ return () => {
|
|
|
|
+ clearInterval(userInterval.current);
|
|
|
|
+ userInterval.current = null;
|
|
|
|
+ };
|
|
}, [userTypeValue]);
|
|
}, [userTypeValue]);
|
|
|
|
|
|
return (
|
|
return (
|
|
@@ -353,79 +367,91 @@ const DataBoard: React.FC = () => {
|
|
<div className={styles.title_text}>统计数据</div>
|
|
<div className={styles.title_text}>统计数据</div>
|
|
<div className={styles.statistics}>
|
|
<div className={styles.statistics}>
|
|
<div className={styles.user_data}>
|
|
<div className={styles.user_data}>
|
|
- <div className={styles.statistics_title_text}>用户统计</div>
|
|
|
|
|
|
+ <div className={styles.statistics_title_text}>
|
|
|
|
+ <DoubleRightOutlined style={{ fontSize: '17px', color: '#52ffff' }} />
|
|
|
|
+ <span> 用户统计 </span>
|
|
|
|
+ </div>
|
|
<div className={styles.user_content}>
|
|
<div className={styles.user_content}>
|
|
<div className={styles.user_item}>
|
|
<div className={styles.user_item}>
|
|
<div className={styles.item_title}>注册用户数</div>
|
|
<div className={styles.item_title}>注册用户数</div>
|
|
- <datav.DigitalFlop config={userNum} style={{ width: '200px', height: '50px' }} />
|
|
|
|
|
|
+ <datav.DigitalFlop config={userNum} style={{ width: '170px', height: '50px' }} />
|
|
</div>
|
|
</div>
|
|
<div className={styles.user_item}>
|
|
<div className={styles.user_item}>
|
|
<div className={styles.item_title}>家庭数量</div>
|
|
<div className={styles.item_title}>家庭数量</div>
|
|
<datav.DigitalFlop
|
|
<datav.DigitalFlop
|
|
config={homeNum}
|
|
config={homeNum}
|
|
className={styles.item_content}
|
|
className={styles.item_content}
|
|
- style={{ width: '200px', height: '50px' }}
|
|
|
|
|
|
+ style={{ width: '170px', height: '50px' }}
|
|
/>
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div className={styles.device_data}>
|
|
<div className={styles.device_data}>
|
|
- <div className={styles.statistics_title_text}>设备统计</div>
|
|
|
|
|
|
+ <div className={styles.statistics_title_text}>
|
|
|
|
+ <DoubleRightOutlined style={{ fontSize: '17px', color: '#52ffff' }} />
|
|
|
|
+ <span> 设备统计 </span>
|
|
|
|
+ </div>
|
|
<div className={styles.device_content}>
|
|
<div className={styles.device_content}>
|
|
<div className={styles.device_item}>
|
|
<div className={styles.device_item}>
|
|
- <datav.DigitalFlop
|
|
|
|
- config={deviceNum}
|
|
|
|
- className={styles.device_num}
|
|
|
|
- style={{ width: '200px', height: '50px' }}
|
|
|
|
- />
|
|
|
|
- <img src={decoration_two} className={styles.device_bg} alt="装饰背景" />
|
|
|
|
|
|
+ <div className={styles.qiu}>
|
|
|
|
+ <datav.DigitalFlop
|
|
|
|
+ config={deviceNum}
|
|
|
|
+ className={styles.device_num}
|
|
|
|
+ style={{ width: '200px', height: '50px' }}
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
<div className={styles.device_title}>设备数</div>
|
|
<div className={styles.device_title}>设备数</div>
|
|
</div>
|
|
</div>
|
|
<div className={styles.device_item}>
|
|
<div className={styles.device_item}>
|
|
- <datav.DigitalFlop
|
|
|
|
- config={onlineDeviceNum}
|
|
|
|
- className={styles.device_num}
|
|
|
|
- style={{ width: '200px', height: '50px' }}
|
|
|
|
- />
|
|
|
|
- <img src={decoration_two} className={styles.device_bg} alt="装饰背景" />
|
|
|
|
|
|
+ <div className={styles.qiu}>
|
|
|
|
+ <datav.DigitalFlop
|
|
|
|
+ config={onlineDeviceNum}
|
|
|
|
+ className={styles.device_num}
|
|
|
|
+ style={{ width: '200px', height: '50px' }}
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
<div className={styles.device_title}>在线设备数</div>
|
|
<div className={styles.device_title}>在线设备数</div>
|
|
</div>
|
|
</div>
|
|
<div className={styles.device_item}>
|
|
<div className={styles.device_item}>
|
|
- <datav.DigitalFlop
|
|
|
|
- config={offlineDeviceNum}
|
|
|
|
- className={styles.device_num}
|
|
|
|
- style={{ width: '200px', height: '50px' }}
|
|
|
|
- />
|
|
|
|
- <img src={decoration_two} className={styles.device_bg} alt="装饰背景" />
|
|
|
|
|
|
+ <div className={styles.qiu}>
|
|
|
|
+ <datav.DigitalFlop
|
|
|
|
+ config={offlineDeviceNum}
|
|
|
|
+ className={styles.device_num}
|
|
|
|
+ style={{ width: '200px', height: '50px' }}
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
<div className={styles.device_title}>离线设备数</div>
|
|
<div className={styles.device_title}>离线设备数</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div className={styles.device_content}>
|
|
<div className={styles.device_content}>
|
|
<div className={styles.device_item}>
|
|
<div className={styles.device_item}>
|
|
- <datav.DigitalFlop
|
|
|
|
- config={errorDeviceNum}
|
|
|
|
- className={styles.device_num}
|
|
|
|
- style={{ width: '200px', height: '50px' }}
|
|
|
|
- />
|
|
|
|
- <img src={decoration_two} className={styles.device_bg} alt="装饰背景" />
|
|
|
|
|
|
+ <div className={styles.qiu}>
|
|
|
|
+ <datav.DigitalFlop
|
|
|
|
+ config={errorDeviceNum}
|
|
|
|
+ className={styles.device_num}
|
|
|
|
+ style={{ width: '200px', height: '50px' }}
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
<div className={styles.device_title}>故障设备数</div>
|
|
<div className={styles.device_title}>故障设备数</div>
|
|
</div>
|
|
</div>
|
|
<div className={styles.device_item}>
|
|
<div className={styles.device_item}>
|
|
- <datav.DigitalFlop
|
|
|
|
- config={masterControlNum}
|
|
|
|
- className={styles.device_num}
|
|
|
|
- style={{ width: '200px', height: '50px' }}
|
|
|
|
- />
|
|
|
|
- <img src={decoration_two} className={styles.device_bg} alt="装饰背景" />
|
|
|
|
|
|
+ <div className={styles.qiu}>
|
|
|
|
+ <datav.DigitalFlop
|
|
|
|
+ config={masterControlNum}
|
|
|
|
+ className={styles.device_num}
|
|
|
|
+ style={{ width: '200px', height: '50px' }}
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
<div className={styles.device_title}>主控数量</div>
|
|
<div className={styles.device_title}>主控数量</div>
|
|
</div>
|
|
</div>
|
|
<div className={styles.device_item}>
|
|
<div className={styles.device_item}>
|
|
- <datav.DigitalFlop
|
|
|
|
- config={subControlNum}
|
|
|
|
- className={styles.device_num}
|
|
|
|
- style={{ width: '200px', height: '50px' }}
|
|
|
|
- />
|
|
|
|
- <img src={decoration_two} className={styles.device_bg} alt="装饰背景" />
|
|
|
|
|
|
+ <div className={styles.qiu}>
|
|
|
|
+ <datav.DigitalFlop
|
|
|
|
+ config={subControlNum}
|
|
|
|
+ className={styles.device_num}
|
|
|
|
+ style={{ width: '200px', height: '50px' }}
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
<div className={styles.device_title}>分控数量</div>
|
|
<div className={styles.device_title}>分控数量</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -438,7 +464,9 @@ const DataBoard: React.FC = () => {
|
|
<div className={styles.title_text}>用户增长趋势</div>
|
|
<div className={styles.title_text}>用户增长趋势</div>
|
|
<div className={styles.user_charts}>
|
|
<div className={styles.user_charts}>
|
|
{userChartsData && userChartsData.length ? (
|
|
{userChartsData && userChartsData.length ? (
|
|
- <LineChartsCommon width={450} height={250} data={userChartsData} />
|
|
|
|
|
|
+ <Suspense fallback={<div>loading</div>}>
|
|
|
|
+ <LineChartsCommon width={450} height={250} data={userChartsData} />
|
|
|
|
+ </Suspense>
|
|
) : (
|
|
) : (
|
|
<datav.Loading style={{ position: 'absolute' }}>Loading...</datav.Loading>
|
|
<datav.Loading style={{ position: 'absolute' }}>Loading...</datav.Loading>
|
|
)}
|
|
)}
|
|
@@ -483,7 +511,9 @@ const DataBoard: React.FC = () => {
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{areaDeviceList && areaDeviceList.length ? (
|
|
{areaDeviceList && areaDeviceList.length ? (
|
|
- <MapComponent userData={userNum} areaList={areaDeviceList} />
|
|
|
|
|
|
+ <Suspense fallback={<div>loading</div>}>
|
|
|
|
+ <MapComponent userData={userNum} areaList={areaDeviceList} />
|
|
|
|
+ </Suspense>
|
|
) : (
|
|
) : (
|
|
<datav.Loading style={{ position: 'absolute' }}>Loading...</datav.Loading>
|
|
<datav.Loading style={{ position: 'absolute' }}>Loading...</datav.Loading>
|
|
)}
|
|
)}
|
|
@@ -493,14 +523,20 @@ const DataBoard: React.FC = () => {
|
|
<div className={styles.decoration_right_3}>
|
|
<div className={styles.decoration_right_3}>
|
|
<PreloadImage src={border} alt="边框" />
|
|
<PreloadImage src={border} alt="边框" />
|
|
<div className={styles.title_text}>地区设备数量统计</div>
|
|
<div className={styles.title_text}>地区设备数量统计</div>
|
|
- {areaDeviceList && areaDeviceList.length && <AreaDeviceData data={areaDeviceList} />}
|
|
|
|
|
|
+ {areaDeviceList && areaDeviceList.length && (
|
|
|
|
+ <Suspense fallback={<div>loading</div>}>
|
|
|
|
+ <AreaDeviceData data={areaDeviceList} />
|
|
|
|
+ </Suspense>
|
|
|
|
+ )}
|
|
</div>
|
|
</div>
|
|
{/* 中间内容-----右侧--设备增长趋势*/}
|
|
{/* 中间内容-----右侧--设备增长趋势*/}
|
|
<div className={styles.decoration_right_4}>
|
|
<div className={styles.decoration_right_4}>
|
|
<PreloadImage src={border} alt="边框" />
|
|
<PreloadImage src={border} alt="边框" />
|
|
<div className={styles.title_text}>设备增长趋势</div>
|
|
<div className={styles.title_text}>设备增长趋势</div>
|
|
{deviceChartsData && deviceChartsData.length ? (
|
|
{deviceChartsData && deviceChartsData.length ? (
|
|
- <LineChartsCommon width={450} height={250} data={deviceChartsData} />
|
|
|
|
|
|
+ <Suspense fallback={<div>loading</div>}>
|
|
|
|
+ <LineChartsCommon width={450} height={250} data={deviceChartsData} />
|
|
|
|
+ </Suspense>
|
|
) : (
|
|
) : (
|
|
<datav.Loading style={{ position: 'absolute' }}>Loading...</datav.Loading>
|
|
<datav.Loading style={{ position: 'absolute' }}>Loading...</datav.Loading>
|
|
)}
|
|
)}
|
|
@@ -512,7 +548,11 @@ const DataBoard: React.FC = () => {
|
|
{homeInfo && homeInfo.length ? (
|
|
{homeInfo && homeInfo.length ? (
|
|
<Slider {...settings} className="swiper-container">
|
|
<Slider {...settings} className="swiper-container">
|
|
{homeInfo.map((res) => {
|
|
{homeInfo.map((res) => {
|
|
- return <SliderData key={res} data={res} />;
|
|
|
|
|
|
+ return (
|
|
|
|
+ <Suspense key={res} fallback={<div>loading</div>}>
|
|
|
|
+ <SliderData key={res} data={res} />
|
|
|
|
+ </Suspense>
|
|
|
|
+ );
|
|
})}
|
|
})}
|
|
</Slider>
|
|
</Slider>
|
|
) : (
|
|
) : (
|