import React, { useCallback, useEffect, useRef, useState } from "react"; import styles from "./index.module.scss"; import classNames from "classnames"; import { A2getGoodsDataType } from "@/types"; import { Input, Pagination } from "antd"; import { SearchOutlined } from "@ant-design/icons"; import { useDispatch, useSelector } from "react-redux"; import { A2_APIgetGoodsList, A2_APIgetSelectData } from "@/store/action/A2Main"; import { RootState } from "@/store"; import { envUrl } from "@/utils/env"; import ImageLazy from "@/components/ImageLazy"; // 轮播图 import { Swiper, SwiperSlide } from "swiper/react"; import { FreeMode } from "swiper"; // Import Swiper styles import "swiper/css"; import "swiper/css/free-mode"; import Tab4Info from "../Tab4Info"; const typeArr = [ { id: "img", name: "二维文物" }, { id: "model", name: "三维文物" }, ]; function Tab4() { const dispatch = useDispatch(); // 看看是不是还没有发送请求 const [isDataFlag, setIsDataFlag] = useState(false); // 发送请求参数 const [getData, setGetData] = useState({ dictAge: "", dictTexture: "", searchKey: "", pageNum: 1, pageSize: 8, type: "img", }); // 发送请求函数 const getList = useCallback(() => { setIsDataFlag(true); let searchKey = ""; if (inpValueRef.current) searchKey = inpValueRef.current.input.value; dispatch(A2_APIgetGoodsList({ ...getData, searchKey })); }, [dispatch, getData]); useEffect(() => { getList(); }, [getList]); // 输入框 const [inpValue, setInpValue] = useState(""); const inpValueRef = useRef(null); useEffect(() => { inpValueRef.current = inpValue; }, [inpValue]); useEffect(() => { // 发送请求拿到下拉框数据 // dispatch(A2_APIgetSelectData("age")); dispatch(A2_APIgetSelectData("texture")); }, [dispatch]); // 获取下拉数据 const selectData = useSelector( (state: RootState) => state.A2Main.selectData.texture ); // 从仓库获取数据 const goodsList = useSelector((state: RootState) => state.A2Main.goodsList); // 详情页 id const [infoId, setInfoId] = useState(0); return (
{/* 二维 三维的筛选 */} {typeArr.map((v) => (
setGetData({ ...getData, type: v.id, pageNum: 1 })} > {v.name}
))} {/* 输入框 */}
setInpValue(e.target.value.trim())} ref={inpValueRef} />
{ if (getData.pageNum === 1) getList(); else setGetData({ ...getData, pageNum: 1 }); }} > 搜索
{/* 类型的筛选 */}
console.log("slide change", e)} // onSwiper={(swiper) => (mySwiperRef.current = swiper)} > {selectData.map((v) => (
setGetData({ ...getData, dictTexture: v.value as string, pageNum: 1, }) } className={classNames( "row", getData.dictTexture === v.value ? "active" : "" )} > {v.label}
))}
{/* 主要内容 */} {goodsList.list.length <= 0 && isDataFlag ? (
暂无数据
) : (
{goodsList.list.map((v) => (
setInfoId(v.id)} >

{v.name}

))}
)} {/* 分页器 */}
setGetData({ ...getData, pageNum: page })} showSizeChanger={false} />
{/* 点击文物进入详情页 */} {infoId ? ( setInfoId(0)} isOpen={false} /> ) : null}
); } const MemoTab4 = React.memo(Tab4); export default MemoTab4;