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

home2 게시판 React 게시판 useEffect 잘못 쓴걸까요?

useEffect 잘못 쓴걸까요?

6 글 보임 - 1 에서 6 까지 (총 6 중에서)
  • 글쓴이
  • #33692

    강민여
    참가자

    선생님이 알려주신대로 li 클릭하면 백그라운드 바꾸는건 해냈는데요 ..

    function App() {
      let [gnbBtn, setGnbBtn] = useState('')
      let [clicked, setClicked] = useState(0)

    useEffect(() => {
         setClicked(1);
    }, [])

    return (
    <li  onClick={() => {
                  navigate("/");
                  setClicked(1);
                  setGnbBtn('btn_color')
                }}
                className={clicked === 1 ? gnbBtn : ''}     >

    <li onClick={() => {
                navigate("/about");
                setClicked(2);
                setGnbBtn('btn_color')
              }}
               className={clicked === 2 ? gnbBtn : ''} >

    이렇게 해서 클릭하면 gnbBtn 이라는 클래스를 추가하는건 작동을 하는데요

     

    화면 처음 업로드 되었을때 첫번째 li가 클래스가 추가가 되어있어야 해서 

    useEffect 쓰면 될거라 생각하고 업로드했을때 setClicked 값이 1이면 될거 같았는데

    안됩니다 ㅠㅠ  이 방법이 아닌건가요??

     

    #33711

    codingapple
    키 마스터

     let [clicked, setClicked] = useState(1)

    이렇게 해놔도 똑같을듯요 

    #33713

    강민여
    참가자

    해봤는데 페이지 맨 처음에 로드했을때 적용이 안되어요..ㅠ 

    #33716

    강민여
    참가자

    {
                clicked === 1 ? <li className='btn_color' onClick={() => {
                  navigate("/");
                  console.log(clicked)
                }} ></li> : null
              }
              {
                clicked > 1 ? <li className='' onClick={() => {
                  navigate("/");
                  console.log(clicked)
                }} ></li> : null
              }

     

    이렇게 첨부터 클래스 붙이고 올라가면 떼는걸로 해봤는데 

    콘솔로 찍어보니까..  

    저는 li에 onClick 하면 setClicked(2) 이렇게 고정 숫자를 줬는데 

    콘솔로 찍어서 클릭할때마다 click 상태가 다 달라요 ㅠㅠ 

    4번째 li에는 setClicked(4) 해놔도 페이지 로딩되고 4번째를 누르면 

    click이 1로 뜹니다.... 바뀐다고 좋아하고 있었는데... 

    어떤 li를 누른거까지 기억하는 상태를 만들어야하는건가요..?ㅠㅠ 

    #33718

    강민여
    참가자

    setClicked(clicked + 1)으로 고쳐서 원하는 대로 나오게 했어용.......

     

    #33733

    codingapple
    키 마스터

    gnbBtn 초기값이 비어있어서 그런듯요 그것도 초기값 집어넣으면 됩니다 

    근데 gnbBtn 쓰는 자리에 그냥 'btn_color' 라고 문자 집어넣어도 똑같지않을까요 

6 글 보임 - 1 에서 6 까지 (총 6 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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