우당탕탕 개발일지

78일차_day06 & day07 본문

비트캠프/이론 및 정리

78일차_day06 & day07

ujin302 2024. 10. 28. 18:00
반응형

useReducer()

React에서 컴포넌트의 상태 관리를 위해서 useState를 사용해서 상태를 업데이트를 하는데,
useReducer를 사용하게 되면 컴포넌트와 상태 업데이트 로직을 분리하여 컴포넌트 외부에서도 상태 관리를 할 수 있다.
즉, 현재 컴포넌트가 아닌 다른 곳에 state를 저장하고 싶을 때 유용하게 사용할 수 있다. 

[사용법]
const [state, dispatch] = useReducer(reducer, initialState);

 

  • state : 현재 상태
  • dispatch : action을 발생시키는 함수
  • reducer : state와 action를 받아 새로운 state를 반환하는 함수
  • initialState : 초기값

 

 

Test01: useReducer (1)

 

COLOR 값 설정

 

 COLOR 값 반환

 

 

Test02: useReducer (2)

 

 

 

Test03: useReducer (3) 객체

노란색: 객체를 다루는 것이 보임.

초록색: type 변수가 CHANGE_COLOR일 경우, text 변수에 따른 값 변화 

 

결과 화면은 Test02와 동일

 

 

Test04: useReducer (4) & url

성공

 

실패

 

 

 

Test05: useReducer (5) & url

성공: 이미지 X / 이미지 O

 

실패

 

React - Router

[ 리액트는 SPA (Single Page Application) 방식 ]

SPA방식 X 

: 일반적으로 클라이언트가 요청을 하면 서버에서 요청한 페이지를 보여주기 위해 로딩되는 모습이 보인다. 

 

SPA 방식 특징

  • 모든 문서를 다 읽음
  • 클라이언트의 요청 시, 로딩 없이 바로 보여줌
  • 속도 빠름

 

[ 특징 ]

  • 기존 웹 페이지처럼 여러 개의 페이지를 사용하며 새로운 페이지를 로드 하는 기존의 MPA 방식 X
  • 새로운 페이지를 로드 X, 하나의 페이지 안에서 필요한 데이터만 가져오는 형태

 

 

 

App01 : Router (1)

노란색: 메뉴

초록색: 아래 결과 화면의 url 경로 의미 >> 메뉴(노란색)에 의한 노출되는 화면

 

 

App02: Router (2)

 

 

 

 

App03: Router (3)

:{변수명}

:{변수명} 를 route path에 사용하면 useParams() 로 불러와 사용 가능
: 뒤에 나오는 부분이 params의 key 부분이 되어 :name 는 name가 key가 되어 불러오고 있다.

 

 

 

 

JSX(JavaScript XML)

React 애플리케이션에서 사용되는 JavaScript의 확장 문법으로, UI를 표현하기 위한 도구이다.
JSX를 사용하면 JavaScript 코드 내에서 HTML과 비슷한 구문을 사용하여 UI를 선언할 수 있다.

 

map()

  • 배열의 각 요소를 JSX로 변환하여 새로운 배열 생성
  • 데이터 배열을 JSX로 변환
  • JSX를 React 컴포넌트에서 렌더링하면 화면에 원하는 결과 표시 가능

 

filter()

  • 원본 배열을 필터링하여 조건을 만족하는 요소들을 포함하는 새로운 배열을 반환
  • 새로운 배열은 JSX로 렌더링할 준비 X
  • JSX를 생성하려면 map() 메서드 or 다른 순회 메서드를 사용하여 각 요소를 JSX로 변환해줘야 함.

 

[ 결론 ]

원본 데이터를 필터링해서 새로운 배열을 만든다고 해서 웹 페이지나 UI에 바로 결과 표시 X
JSX로 렌더링하려면 map()이나 유사한 메서드를 사용하여 각 요소를 JSX로 변환 필수!!

 

결과 화면

 

 

 

App04: Router (4)

 

App05: 숙제

 



 

 

반응형

'비트캠프 > 이론 및 정리' 카테고리의 다른 글

81일차_day08: Redux  (0) 2024.10.31
80일차_Spring + React + MyBatis(MySQL)  (0) 2024.10.30
77일차 - day04 & day05  (0) 2024.10.25
76일차 - day03 & day04  (0) 2024.10.24
75일차 - day02_vite & day03  (0) 2024.10.23