본문 바로가기
Projects

hard mode box 개발

by 해-온 2021. 12. 11.

오늘 한 내용

  • nav app.jsx로 이동
  • 더미 상자 추가
  • add button modal 추가
  • 더미 값 받아오기

오늘 배운 내용

  • router v6 사용법
  • nav 선택 시 스타일링 (굳이 activeStyle 사용 안 해도 됨)
  • const activeTab = (location, path) => {
        if (location.pathname === path) {
          return {
            backgroundColor: "rgba(255, 255, 255, 0.5)",
            borderRadius: "7px",
          };
        }
      };
    
  • 자식에서 부모에게 데이터 전달
    **<부모>**
    
    const [color, setColor] = useState("클릭");
    
    자식 요소에게 전달
    
    <ColorBox setColor={setColor} />
    
    {color}
    
    **<자식>**
    
    onClick={() => {
    props.setColor(colors.key);
    }}
    
  • 랜덤 출력
    const getRandomColor = () => {
     return color[Math.floor(Math.random() * color.length)];
    };
    ​

캡쳐

소감

핵심으로 들어온 프로젝트. 리액트가 문제인 줄 알았는데 그것이 아니었다. 미숙한 자바스크립트 실력이 문제였다. 기본이 안 된 채 리액트를 쓰려고 하니 이 사달이 나지... 한 문제를 풀기 위해 몇 시간을 혹은 며칠을 머리 싸메고 노력했다. 그덕에 이번 회차는 가장 긴 시간을 투자한 게 아닐까 싶다. 이제 어느정도 내가 원하는 기능은 구현 했고 모르는 부분은 다시 강의를 보면서 수정하고 있다. 신기한게 처음 강의를 볼 때는 자괴감에 눈물 펑펑이었는데 이제는 좀 알 거 같은 느낌? 한 강의를 5번도 넘게 봐서 그런가...? 원래 이번주 토요일에 끝나는게 목표였는데 일주일은 더 잡아야 할 거 같다. 그래도 hard mode만 끝내면 나머지는 재사용에 조금 수정이니까 빨리 끝날 것이라 희망한다. 화이팅!!!

 

오류 일지

어제 했던 고민인 Nav를 모든 페이지마다 쓰지 않고 뜨게 하는 방법을 찾았다. App.jsx에 상위에 <Nav /> 를 적어주는 방식인데 router가 v6로 넘어가면서 난관에 봉착했다. 원래라면 내가 띄우고 싶은 페이지 위에 <Nav />를 넣어주면 아무 문제가 없었는데

이렇게...

 

근데 이제는 <Routes> 얘 때문에 이 태그 안에 적으면 계속 오류나는 것이었다. 계속 Route를 붙이래. 얜 페이지가 아닌데!!! 찾다가 <Routes> 상위에 적어야 한다는 것을 알게 되고 겨우 완성 (여기까지 두시간 걸렸다.)

 

 

근데 이제 바깥에 적으니까 첫 화면이랑 login 페이지에도 nav가 뜨는 오류 발생. 없애는 방법은 생각보다 간단했다. useLocation을 선언하고 location.pathname하면 현재 페이지 경로의 이름이 뜨는데 그걸로 식을 세우면 됐다.

 

{location.pathname === "/" ? null : <Nav authService={authService}

 

근데 (근데 2) 계속 안뜨는거라... 화면에 존재자체를 하지 않았다. 개발자 도구 열어서 봐도 아예 뜨지 않았다는 것만 알 수 있었음. 그래서 식이 잘못됐나 싶어서 또 비슷한 식 다른 방식을 찾아서 입력해보았다. (여기까지 두시간 또 걸렸다.) 그 과정에서 또 오류 등장. 

 

'useLocation() may be used only in the context of a <Router> component'

 

'typeerror: cannot read properties of undefined (reading 'pathname')

 

연달아 터지는 오류에 내 머리도 터져... 😇

 

이 오류는 index.js에서 router를 설정해줘야 풀리는 것이었다. 그래서 app.jsx에 가장 바깥 태그인 BrowserRouter를 index.js에 설정해주었다.

그러니 코드가 pathname이 제대로 출력되고 코드가 실행되는 것을 볼 수 있었다. 

 

바뀐 코드. 엄청 간단해지고 깔끔해졌다.

 

그 외에도 자잘한 오류들이 많았는데 너무 많아서 기억도 안난다. 7시부터 시작했는데 지금 11시다. 원래 이걸 빨리 하고 activeStyle 해보려고 했는데 이게 무슨,,, 내일은 하루종일 프로젝트 해야겠다. 이대로는 토요일까지 못 끝내~~

 

 

 

 

 

 

'Projects' 카테고리의 다른 글

hard mode 개발 3  (0) 2021.12.21
hard mode box 개발2  (0) 2021.12.17
navbar 디자인 && logout  (0) 2021.12.05
firebase를 이용한 로그인  (0) 2021.12.04
3tamp 첫 화면 개발  (0) 2021.12.01

댓글