From 57f104e9462b027ddda889cd7313fde703436f93 Mon Sep 17 00:00:00 2001 From: "sungmin.in" Date: Mon, 12 Feb 2024 18:47:27 +0900 Subject: [PATCH] =?UTF-8?q?[=ED=99=88=ED=8C=A8=EB=84=90]=20=EB=A1=A4?= =?UTF-8?q?=EB=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HomeBanner/HomeBannerTemplate3.jsx | 59 ++++++++++-- .../HomePanel/HomeBanner/RollingUnit.jsx | 89 ++++++++++++++----- .../HomePanel/HomeTodayDeal/HomeTodayDeal.jsx | 5 +- 3 files changed, 122 insertions(+), 31 deletions(-) diff --git a/com.twin.app.shoptime/src/views/HomePanel/HomeBanner/HomeBannerTemplate3.jsx b/com.twin.app.shoptime/src/views/HomePanel/HomeBanner/HomeBannerTemplate3.jsx index f6e011b6..ecab2958 100644 --- a/com.twin.app.shoptime/src/views/HomePanel/HomeBanner/HomeBannerTemplate3.jsx +++ b/com.twin.app.shoptime/src/views/HomePanel/HomeBanner/HomeBannerTemplate3.jsx @@ -34,6 +34,7 @@ export default function HomeBannerTemplate3() { const [bannerInfos, setBannerInfos] = useState([]); const [vctpImage, setVctpImage] = useState(null); const [wdthImage, setWdthImage] = useState(null); + const [onFocus, setOnFocus] = useState(true); const homeMainContentsBannerInfos = useSelector( (state) => state.home.mainContentsData.homeMainContentsBannerInfos @@ -78,6 +79,15 @@ export default function HomeBannerTemplate3() { const onClickBanner = useCallback(() => {}, []); + // 포커스가 들어오면 롤링 중지 + const _onFocus = useCallback(() => { + setOnFocus(true); + }, [onFocus]); + + const _onBlur = useCallback(() => { + setOnFocus(false); + }, [onFocus]); + return (
@@ -87,9 +97,19 @@ export default function HomeBannerTemplate3() { bannerInfos.map((item, index) => { return item.banrLctnNo === "1" && item.shptmDspyTpNm == "Rolling" ? ( - + ) : item.banrLctnNo === "1" && item.shptmDspyTpNm == "Random" ? ( - + ) : ( {/* 배너2 */} - + {bannerInfos && bannerInfos.map((item, index) => { return item.banrLctnNo === "2" && @@ -112,6 +136,7 @@ export default function HomeBannerTemplate3() { index={index} key={index} imageType={false} + onFocus={onFocus} /> ) : item.banrLctnNo === "2" && item.shptmDspyTpNm == "Random" ? ( { return item.banrLctnNo === "3" && item.shptmDspyTpNm == "Rolling" ? ( - + ) : item.banrLctnNo === "3" && item.shptmDspyTpNm == "Random" ? ( - + ) : ( { return item.banrLctnNo === "4" && item.shptmDspyTpNm == "Rolling" ? ( - + ) : item.banrLctnNo === "4" && item.shptmDspyTpNm == "Random" ? ( - + ) : ( { if (bannerData) { setRollingData(bannerDetailInfos); - setShptmBanrTpNm(bannerDetailInfos.shptmBanrTpNm); + setDetailLength(bannerDetailInfosLength); + setShptmBanrTpNm(bannerDetailInfos[startIndex].shptmBanrTpNm); + setLastIndex(bannerDetailInfosLength - 1); } - }, [bannerData, index]); + }, [bannerData, shptmBanrTpNm]); + // 더미 데이터 테스트용 + useEffect(() => { + // 포커스가 없을 경우에만 롤링 + if (bannerDetailInfosLength === 1) { + return; + } + + if (onFocus === false) { + const id = setInterval(() => { + setCount((count) => count - 1); + }, 1000); + + if (count === 0) { + setStartIndex(startIndex + 1); + setCount(10); + clearInterval(id); + if (startIndex === lastIndex) { + setStartIndex(0); + } + } + return () => clearInterval(id); + } + }, [count, onFocus]); return ( <> - {shptmBanrTpNm && - (shptmBanrTpNm === "Image Banner" ? ( - - ) : shptmBanrTpNm === "LIVE" || shptmBanrTpNm === "VOD" ? ( - - ) : shptmBanrTpNm === "Today's Deals" ? ( - - ) : null)} + {bannerDetailInfos && + bannerDetailInfos[startIndex].shptmBanrTpNm === "Image Banner" ? ( + + ) : bannerDetailInfos[startIndex].shptmBanrTpNm === "LIVE" || + bannerDetailInfos[startIndex].shptmBanrTpNm === "VOD" ? ( + + ) : bannerDetailInfos[startIndex].shptmBanrTpNm === "Today's Deals" ? ( + + ) : null} ); } diff --git a/com.twin.app.shoptime/src/views/HomePanel/HomeTodayDeal/HomeTodayDeal.jsx b/com.twin.app.shoptime/src/views/HomePanel/HomeTodayDeal/HomeTodayDeal.jsx index a7ae56c6..2bddcfbb 100644 --- a/com.twin.app.shoptime/src/views/HomePanel/HomeTodayDeal/HomeTodayDeal.jsx +++ b/com.twin.app.shoptime/src/views/HomePanel/HomeTodayDeal/HomeTodayDeal.jsx @@ -18,6 +18,7 @@ export default function HomeTodayDeal({ productName, soldoutFlag, isHorizontal, + rolling, ...rest }) { const handleClick = useCallback( @@ -74,14 +75,14 @@ export default function HomeTodayDeal({
- {/* {rolling == true ? ( + {rolling == true ? ( <>
) : ( <> - )} */} + )} ); }