GoodCardSlider.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. import { Carousel } from "react-responsive-carousel";
  2. import { GoodCardSet } from "./GoodCardSet";
  3. import { useState, useEffect } from "react";
  4. import { Box } from "@mui/material";
  5. export const GoodCardSlider = ({ goods = [] } = {}) => {
  6. const [goodSets, setGoodSets] = useState([]);
  7. const num = 5;
  8. useEffect(() => {
  9. if (goods?.length) {
  10. let goodSets = [];
  11. for (let i = 0; i < goods.slice(0, 20).length; i += num) {
  12. if (i + num > goods.length && goods.length % num !== 0) {
  13. goodSets.push(goods.slice(i, goods.length));
  14. break;
  15. }
  16. goodSets.push(goods.slice(i, i + num));
  17. }
  18. setGoodSets(goodSets);
  19. }
  20. }, [goods]);
  21. return (
  22. <Box className="GoodCardSlider">
  23. <Carousel className="Slider" showThumbs={false} showStatus={false} showIndicators={false}>
  24. {(goodSets || []).map((goodSet, idx) => (
  25. <Box key={idx}>
  26. <GoodCardSet goods={goodSet} num={num} />
  27. </Box>
  28. ))}
  29. </Carousel>
  30. </Box>
  31. );
  32. };