[CHAM] redux에서 지속적인 로그인 체크
·
개인프로젝트/CHAM
나는 redux에 user_id를 받아와 저장후 이 값을 빼서 썼다. 하지만 어디선가 리렌더링 되면서 redux값을 초기화 시키고 redux에 있는 state값들을 비워버렸다. 어디서 이런 오류가 발생하는지 계속 찾아봤지만 찾지 못했다.. 그래서 로그인을 유지시키기 위해 setInterval로 로그인후 주기적으로 state값을 넣어주는 함수를 만들었다. 하지만 setInterval이 리렌더링 되면서 쌓이는 것같이 점점 더 빨라졌다. 생각을 하다가 state에 저장된 user_id 불러와서 useEffect(() => { dispatch(loginAction.loginCheck()); }, [user_id]); state의 user_id가 바뀔때마다 로그인을 체크를 하기로 했다.
[CHAM] 하위 컴포넌트에서 값 받아오기, 주기
·
개인프로젝트/CHAM
하위 컴포넌트에서 set함수를 받아 부모 컴포넌트의 state값을 변경해주려고 한다. redux를 이용하면 너무 양이 많아질것 같고 props로 넘기기엔 부모와 자식간의 사이에 컴포넌트들이 많았다. 그래서 좀더 효율적인 방법이 없을까 고민하다가 useContext라는 훅을 찾아냈다. 1. useContext useContext는 부모에서 하위컴포넌트로 값을 전달할 수 있다. 기존 props와 다른 점은 중간다리 역할이 없어도 멀리 있는 하위 컴포넌트에 곧바로 전달할수 있다는 점이었다. 이를 사용하면 redux관리, props관리도 쉬울것 같아서 useContext를 쓰기로 생각했다. 2. useContext 사용법 (1) : useContext로 데이터 보내기 useContext에서 전달하는 값은 '객체..
[CHAM] image 올리기
·
개인프로젝트/CHAM
백엔드에서 multer를 이용해서 이미지를 저장후 프론트에서 불러오려고 했다. 하지만 react에서 상대경로로 backend 폴더의 이미지 경로를 불러오지 못했다. react에서는 public폴더를 제외하고 src폴더 외부의 파일을 불러오지 못한다는것을 검색하며 알아냈다. 그래서 multer의 저장장소를 front의 public 폴더에 저장했다. 그렇게 src="절대경로" 로 불러 왔는데 어딘 되고 어딘 안나와서 구글링을 했다. 그 결과 절대경로 앞에 "/" 를 붙여줘서 public 폴더라는 표시를 해줘야 했다. 이미지 경로를 불러오는 걸 구글링하며 이미지 src를 불러오는 방법이 4가지가 있다는 것을 알게되었다. 1. public 폴더에 저장후 절대경로 public 폴더에 imgs폴더를 만들어 이미지들..
[CHAM] 드래그 슬라이드 만들기
·
개인프로젝트/CHAM
처음엔 그냥 swiper에서 긁어올까 생각도 했지만 나중엔 긁어다 쓰더라도 한번은 직접 만들어보고자 직접 만들었다. 슬라이드 또한 재사용성이 가능하도록 슬라이드와 내용물을 따로 컴포넌트화 시켰다. 드래그 단계화 드래그를 하는데 우선 3가지 단계로 나누었다. 1 : MouseDown 2 : MouseMove 3 : MouseUp 1. MouseDown index와 left는 state값으로 관리하여 값이 바뀔때마다 rerender 시켜주었다. 먼저 MouseDown으로 드래그를 시작한다는 것을 표시했다. MouseUp을 했을때 transition을 주고 싶어서 MouseDown과 MouseUp의 transition속성을 따로 관리했다. const [index, setIndex] = useState(0); ..
[CHAM] label 위치 옮기기
·
개인프로젝트/CHAM
1. 회원가입 모달창 회원가입 모달창에서 나는 기존 방식을 벗어나 좌우로 한칸씩 넘기는 UI를 만들기로 했다. 이때 해당 입력하는 Input의 위치를 알려주는 레이블을 만들었다. 1) 레이블 만들기 레이블의 색깔을 넣어주기 위해 index를 state로 만들어 관리했고 화살표 버튼을 누를때마다 조절해줬다. 그 레이블이 index가 x일때 초록색으로 바뀌게 코드를 짰다. 2) 리팩터링 7개를 늘어놓은게 너무 길어보였고 보기 싫었다. 그래서 map을 통해 반복하여 만들기로 했다. {new Array(8).fill(0).map((v, idx) => ( ))} 그래서 위와 같이 코드를 간단하게 줄였다. 나중에 알게된 사실이지만 styled-component에 props를 넘겨 삼항연산자로 처리할수 있었다.
[CHAM] style.display 적용이 안됨
·
개인프로젝트/CHAM
react에서는 기존 js처럼 style.display가 안먹었다. 다른 방법을 찾다가 삼항연산자를 이용하여 display를 조절하기로 했다. 이런식으로 style을 조절했다.