목차
폴더구조 체계화
Container / Presenter 패턴 :
js(JSX)와 html을 나누는 방식 (-> 기존에 가장 많이 사용되는 방식)
파일은 두개로 나누지만 하나로 실행시키는 것입니다.
Presenter는 화면에 보여지는 부분입니다.
container 측에서 presenter를 import 받아와서 사용합니다.
container/presenter 패턴 외에도
파일과 폴더를 잘게 쪼개는 방식의 atomic 패턴이 있습니다.

presenter 인 BoardWriteUI를 container로 import 받아왔습니다.
return() 안에 <BoardWriteUI/> 태그로 presenter를 표현합니다.

그런데 container와 presenter 두개의 파일은 합쳐지지만
writer 변수와 handleChangeWriter 함수 등등과 같은 요소(변수, 함수)들은
합쳐지지 않아서 에러가 발생합니다.

이런 경우, props(properties)를 사용하여
컴포넌트에 값 전달을 할 수 있습니다.
(어떠한 값을 컴포넌트에게 전달해줘야 할 때, props 를 사용합니다.)
import 받아온 presenter는 자식 컴포넌트가 되고
import 받은 입장인 container는 부모 컴포넌트가 되는데
(자식과 부모의 관계는 페이지마다 상황마다 다릅니다.)
이 때,
부모 컴포넌트의 요소(변수, 함수)를 자식 컴포넌트에게 물려 줄 수 있습니다.
(직접적으로 자식이 부모에게 주는 방법은 없습니다.)

return () 안의 <BoardWriteUI /> 태그 안에
라고 입력하면
{handleChangeWriter}함수가
aaa 라는 이름으로 props에 담겨지게 됩니다.
함수가 담겨진 props가 자식 컴포넌트인 presenter 컴포넌트로 가서
{props.handleChangeWriter} 형식으로 함수를 꺼내 사용할 수 있게 됩니다.

마찬가지로 return() 안의 <BoardWriteUI /> 태그 안에
라고 입력하면 presenter 컴포넌트로 가서
writer 변수를 사용할 수 있게 됩니다.
최종적으로 props는
자식 컴포넌트로 가서
함수 aaa와 변수 bbb를 뱉어내게 됩니다.

즉 props란
부모 컴포넌트가 자식 컴포넌트에게
물려주는 변수와 함수가 됩니다.
이런 흐름으로,
리액트는 데이터의 흐름이 단방향 구조라고 합니다.
(에러 잡기 더 쉬움.)
(앵귤러는 데이터의 흐름이 양방향 구조.)


프로젝트 전체 구조에서
public과 pages는 이름 바꾸면 안됩니다.

src 폴더와 styles 폴더는 이름 바꿔도 됩니다.

src 폴더 밑에 commons 폴더가 있는데
src/components 폴더 밑에 또 commons 폴더가 있다.

src/commons는 공통으로 사용되는 기능들 넣는 곳이고
src/components/commons는
기능들을 나눠 넣는 곳인데
여러 페이지에서 사용되는 공통 컴포넌트를 넣습니다.
예를 들어 한 웹 페이지안에
게시물 등록 컴포넌트,
검색 컴포넌트,
배너 컴포넌트
등등 이렇게 나뉠 수 있는데
검색 컴포넌트는 게시글 조회와 같은
다른 페이지에서도 import 하여 사용합니다.
이 때 검색 컴포넌트는 common component에 해당합니다.
등록하기 페이지 에서만 쓰이는 것은
그냥 '컴포넌트'라고 하는데
편의상 '단위 컴포넌트(unit component)'라고 부르겠습니다.
'리액트 공부와 함께 하는 일상 > 2주차' 카테고리의 다른 글
[TIL] 2주차 - 4. TypeScript - 이걸 쓰면 더 안전하다 (0) | 2022.01.20 |
---|---|
[TIL] 2주차 - 3. 컴포넌트 재사용성 (feat.게시물 수정하기) (0) | 2022.01.19 |
[TIL] 2주차 - 2. 실무 전용 반복문 - map/filter (0) | 2022.01.18 |
[TIL] Next.js - Routing (0) | 2022.01.14 |
댓글