• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 Redux 5 강의 응용문제(2번)

Redux 5 강의 응용문제(2번)

  • 이 주제에는 2개 답변, 2명 참여가 있으며 조승현3 년 전에 전에 마지막으로 업데이트했습니다.
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 글쓴이
  • #39197

    조승현
    참가자
    응용2. 주문하기 버튼 누를 때 이미 상품이 state안에 있으면 추가가 아니라 기존 항목 수량증가만?
    
    안녕하세요 !
    문제 if문 조건이 이상한지..자꾸 조금씩 다르게 동작되는데..아무리 생각해도 정답이 떠오르지 않아서 질문 드립니다.
    
    
    import React from "react";
    import { useEffect, useState, useContext } from 'react';
    import { useParams } from 'react-router-dom';
    import { Nav } from 'react-bootstrap';
    import { Context1 } from './../App.js';
    import { addItem, setIem } from './../store';
    import { useDispatch, useSelector } from 'react-redux';
    function Product(props){
        let dispatch = useDispatch();
        let state = useSelector((state)=>{return state});
        let {id} = useParams();
        let title,content,price = null;
        let image = null;
        for(let i=0; i<props.shoes.length; i++){
            let t = props.shoes[i];
            if(t.id === Number(id) && id <= t.id ){
                title = t.title;
                content = t.content;
                price = t.price;
                image = `https://codingapple1.github.io/shop/shoes${t.id+1}.jpg`
            } else if(id >= props.shoes.length){
                console.log('종료');
            }
        }
        //console.log(id)
        useEffect(()=>{
            setTimeout(()=>{
               let div = document.getElementsByClassName('alert');
               div[0].remove();
            }, 2000)
        },[]);
        let [button, setButton] = useState(0);
        let [detailFade, setDetailFade] = useState('');
        
        return(
            <div className={`container opacity ${detailFade}`}>
                <div className="alert alert-warning">
                    2초이내 구매시 할인
                </div>
                <div className="row">
                    <div className="col-md-6">
                    
                    </div>
                    <div className="col-md-6">
                    <h4 className="pt-5">{title}</h4>
                    <p>{content}</p>
                    <p>{price}</p>
                    <button onClick={()=>{
                        let stateId = props.shoes[id].id;
                        let cartId = null;
                        for(let i=0; i<state.cart.length; i++){
                            cartId = state.cart[i].id;
                        }
                        //console.log(state.cart);
                        console.log(id);
                        console.log(cartId)
                        if(id != cartId ){
                            dispatch(addItem( {id : Number(`${stateId}`), name : `${title}`, count : 1} ));
                        } else{
                            dispatch(setIem(id));
                        }
                    }}>주문하기</button>
                    </div>
                </div>
                <Nav variant="tabs"  defaultActiveKey="link0">
                    <Nav.Item>
                    <Nav.Link onClick={()=>{ setButton(0) }} eventKey="link0">버튼0</Nav.Link>
                    </Nav.Item>
                    <Nav.Item>
                    <Nav.Link onClick={()=>{ setButton(1) }} eventKey="link1">버튼1</Nav.Link>
                    </Nav.Item>
                    <Nav.Item>
                    <Nav.Link onClick={()=>{ setButton(2) }} eventKey="link2">버튼2</Nav.Link>
                    </Nav.Item>
                </Nav>
                <TabContent button={button} setDetailFade={setDetailFade} shoes={props.shoes}/>
            </div>
        )
    }
    function TabContent(props){
        let [fade, setFade] = useState('');
        useEffect(()=>{
            let a = setTimeout(()=>{setFade('end')}, 100);
            let b = setTimeout(()=>{props.setDetailFade('opacity100')}, 100);
            return ()=>{
                clearTimeout(a);
                setFade('');
            }
        }, [props.button]);
        return (
            <div className={`start ${fade}`}>
            {[ <div>{props.shoes[0].title}</div>, <div>{props.shoes[1].title}</div>, <div>{props.shoes[2].title}</div> ][props.button]}
            </div>
        )
      }
    export default Product;
    #39215

    codingapple
    키 마스터
    for(let i=0; i<state.cart.length; i++){
      cartId = state.cart[i].id;
    }
    뭔가이상해보입니다 array안에 뭐가 들어있는지 찾으려면 findIndex() 쓰면 쉽습니다
    #39266

    조승현
    참가자
    감사합니다 ! 해결했습니다 ㅎㅎ
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠