◼ FrontEnd/ReactJS

    [ReactJS] React JS 소개 및 설치

    [ReactJS] React JS 소개 및 설치

    React JS의 개념과 탄생 배경 React 탄생 배경 웹 애플리캐이션이 등장함에 따라 웹 개발의 복잡성이 증가하게 되었다. 웹 애플리케이션 : 웹 브라우저를 통해 응용 소프트웨어의 기능을 이용할 수 있도록 만든 웹 서비스 이에 따라 DOM을 직접 조작하는 (Vanila JS, jQuery를 이용하는) 기존의 개발 방법으로는 한계가 생겼다. 이러한 상황에서 자연스럽게 프론트엔드 개발의 생산성 향상과 난이도 하향을 위한 여러 라이브러리 및 프레임워크가 탄생하였다. 이 중 현재 제일 많이 사용되는 것은, React, Angular, Vue이다. React JS란? React JS (혹은 React)는 UI를 구축하고 어플리케이션이 interactive하도록 만들어주는 프레임워크 (Framework) 이자 ..

    [ReactJS] 개발 도중 마주했던 오류 모음 (2022년 11-12월)

    React 라이브러리를 이용하여 웹 개발을 하던 도중 마주했던 여러 에러들을 자잘한 것부터 규모가 컸던 것까지 모두 깃허브에 md문서로 정리해두었다. 혹시 비슷한 에러를 또 마주하게 되면 여기에 와서 Ctri+F를 통해 검색해서 찾아보자. DOM에 직접 접근하여 classList 메소드를 통해 클래스를 추가하고 제거했더니 정상적으로 동작하지 않는다. React에서 특정 요소에 이벤트를 연결하고, event 객체를 매개변수로 받아 활용하는 코드를 작성했는데, event is deprecated 에러가 발생했다. setState를 통해 상태값을 변경하니 원하는 값이 하나씩 밀린 채 변경되는 바람에, 상태값을 활용한 로직이 내 의도대로 동작하지 않는다. (Router를 활용한) React 프로젝트를 초기 세팅..

    [ReactJS] 백에서 GET method를 통해 받아온 데이터를 구조 분해 할당할 때 값이 읽혀지지 않는 문제 - Uncaught TypeError: Cannot read properties of undefined (reading '0')

    🚨 문제 상황 팀 프로젝트 중 백엔드 서버에 필요한 데이터를 요청하여 받은 후, 이 정보를 가공해서 화면에 렌더링해주는 작업이 여러 번 있었다. 이 때 자주 골치를 아프게 했던 에러가 하나 있어 포스트로 남긴다. const ReservationPage = () => { const [lectureData, setLectureData] = useState({}); // 백에서 상품 디테일 데이터 수신 useEffect(() => { fetch(`/data/reservationData.json`, { method: 'GET', }) .then(response => response.json()) .then(data => { setLectureData(data); }); }, []); if (lectureData..

    [ReactJS] setState의 비동기 처리로 인한 버그 해결하기

    [ReactJS] setState의 비동기 처리로 인한 버그 해결하기

    🚨 문제 상황 setState를 통해 상태값을 변경하니 원하는 값이 하나씩 밀린 채 변경되는 바람에 나의 의도대로 코드가 동작하지 않는다. function handleBtnActivateById(event) { setIdValue(event.target.value); console.log(idValue); isIdVaild = idValue.indexOf('@') !== -1 ? true : false; handleBtnActivate(event); } 위의 사진처럼, 입력창에 입력된 값이 (콘솔창에서) 한 글자씩 덜 출력되는 것을 확인할 수 있다. 💡 문제 해결 및 과정 구글링의 통해 알아보니, setState의 Batch Update라는 비동기적 특성으로 인해 이런 문제가 생기는 것임을 알 수 있었다..

    [ReactJS] React에서 이벤트 리스너를 연결하고, event 객체를 활용할 때 주의해야 할 점

    [ReactJS] React에서 이벤트 리스너를 연결하고, event 객체를 활용할 때 주의해야 할 점

    🚨 문제 상황 React에서 특정 요소에 이벤트를 연결하고, event 객체를 매개변수로 받아 활용하기 위해 위와 같은 코드를 작성하였다. 하지만 'event is deprecated'라는 이해할 수 없는 에러가 발생하였고 코드 역시 실행되지 않았다. 💡 문제 해결 및 과정 바닐라 JS에서 특정 요소에 이벤트를 연결해주려면 우선 해당 요소에 해당하는 DOM 객체를 DOM 트리에서 찾아야 한다. 그러고 난 후, 이 객체에 원하는 이벤트를 addEventListener 함수를 통해 연결해주면 된다. 혹은 인라인 방식으로 특정 요소에 해당하는 HTML 태그에 이벤트 속성을 바로 부여해주는 방법도 있다. React에서 특정 요소에 이벤트를 연결해주려면 바닐라 JS에서의 인라인 방식처럼 JSX로 변환된 코드의 태..

    [ReactJS] React로 요소에 클래스 추가 및 제거하기 (부제 : React에서 직접 DOM을 조작하지 않도록 하자)

    🚨 문제 상황 인스타그램을 클론 코딩하는 과정에서 바닐라 JS로 DOM 요소에 접근한 후 클래스를 추가하고 제거하는 데 classList의 add, remove 메소드를 활용하였다. 그러나 이 코드를 React로 변환하는 과정에서도 classList를 그대로 사용하였더니 정상적으로 동작하지 않는 문제가 발생했다. 그래서 console.log()를 통해 React에서도 classList 함수가 제대로 동작하는 지 한 번 실험해보았는데, 클래스가 제대로 제거되고 추가됨을 확인할 수 있었다. 하지만 제대로 동작하는 코드와 달리 화면에 보이는 결과는 그렇지 않았다. (대상이 되는 클래스가 opacity: 0.6 스타일 속성이 부여된 클래스라, 결과를 화면에서 바로 확인할 수 있는 상황이었다.) // SyLogi..