-
[react][슬라이드] 3초마다 화면이 변경되는 슬라이드 구현금융프로젝트 2022. 10. 27. 16:08
만들고 싶었던 화면
몇초인지는 모르겠으나 시간마다 화면이 자동으로 바뀌면서 금융상품을 보여주는 화면을 만들고자 한다.
내가 만든 화면
3초마다 화면을 바뀌게 했지만 버벅거리는 게 있다.
DB
db에 있는 데이터
데이터 받아오기
const [goods, setGoods] = useState([{"gName":"","gInterest":"","gPeriod":"","gMPay":"","gAge":"","gType":""}]); useEffect ( () => { fetch("<http://localhost:9090/bank/goods>").then(res => res.json()).then(res => { setLoading(true); setGoods(res); } ); }, []);
fetch로 서버로 부터 데이터를 받아와서 상태변수에 넣어준다.
태그
const GoodsBlockStyle = styled.div` position: absolute; width: 30vw; height: 15vh; left: 35vw; top: 15vh; padding: 2vw; font-family: 'Manjari'; font-style: normal; font-weight: 700; font-size: 1.5rem; background: #FFD74B; border-radius: 2rem; `; const GoodsTableStyle = styled.table` position: absolute; width: 30vw; height: 40vh; left: 35vw; top: 40vh; font-family: 'Manjari'; font-style: normal; font-weight: 700; font-size: 1.5rem; `; const LogoStyle = styled.div` width: 2vw; height: 2vw; text-align: center; border-radius: 50%; background: #FFD74B; `; return ( <div> <GoodsBlockStyle> 나에게 딱 맞는<br></br> 금융상품을 찾아보세요 </GoodsBlockStyle> <GoodsTableStyle> <Film slide={slidePx} goods={ goods[index] }></Film> </GoodsTableStyle> </div> );
원래는 slidePx로 태그를 이동시킬려고 했으나 그냥 데이터를 바꿔서 화면을 변경시키는 것을 했다.
const [index, setIndex] = useState(0); setInterval(() => { if (loading) { if (index == goods.length - 1) { setIndex(0); } else { setIndex(index + 1); } } }, 3000);
3초마다 인덱스를 증가시켜 태그에 바인딩되는 데이터를 변경해 준다.
jsx 삼항연산자 사용하기
const Film = ({ goods, slide } ) => { return ( <tbody className="film" style={{ transform: `translateX(${slide}vw)`, transition: "0.5s ease", }} > <tr> <td><img src={process.env.PUBLIC_URL+"/savings.png"}></img></td> <td>{ goods.gName}({goods.gType})</td> </tr> <tr><td><hr></hr></td><td><hr></hr></td></tr> { goods.gInterest != 0 ? <tr> <td><img src={ process.env.PUBLIC_URL+"/savings.png"}></img></td> <td>연 { goods.gInterest}%</td> </tr> :null } { goods.gPeriod != 0 ? <tr> <td><img src={ process.env.PUBLIC_URL+"/savings.png"}></img></td> <td>최대 { goods.gPeriod}년</td> </tr> :null } { goods.gMPay != 0 ? <tr> <td><img src={ process.env.PUBLIC_URL+"/savings.png"}></img></td> <td>월 { goods.gMPay}납입</td> </tr> :null } { goods.gAge != 0 ? <tr> <td><img src={ process.env.PUBLIC_URL+"/savings.png"}></img></td> <td>만 { goods.gAge}세부터 수령</td> </tr> :null } { goods.gMaturity != 0 ? <tr> <td><img src={ process.env.PUBLIC_URL+"/savings.png"}></img></td> <td>만기 { goods.gMaturity}개월</td> </tr> :null } <tr><td><br></br><br></br></td></tr> </tbody>) }
<tbody> { goods.gInterest != 0? [태그]:null } </tbody>
위의 방식으로 데이터가 0일 경우 태그를 생성하지 않았다.
'금융프로젝트' 카테고리의 다른 글
[react][setTimeout]슬라이드 (0) 2022.11.04 [react][circle][svg]도넛차트 만들기 (0) 2022.10.31 [react][spring]로그인 페이지 (0) 2022.10.25 [spring][react][SSL] 인증서 발급하기 (0) 2022.10.24 [spring][java][bouncycastle] 인증서 발급하기 (0) 2022.10.20