[꼼꼼한 개발자] 꼼코더

[React] - [처음 만난 리액트] - 15. Props의 특징 및 사용법(JSX, Props 사용예제) 본문

React/처음 만난 리액트

[React] - [처음 만난 리액트] - 15. Props의 특징 및 사용법(JSX, Props 사용예제)

꼼코더 2023. 7. 5. 15:16
반응형

🧹 두서없이 적는 쉬운 정리

1. Props의 중요한 특징은 Read-only 즉 읽기 전용이므로 변경이 불가하다.

2. 다른 Props의 값으로 엘리먼트를 생성하려면새로운  Props 값을 컴포넌트의 전달하여 새로 엘리먼트를 생성하면 된다.

3. 위 과정에서 엘리먼트가 다시 렌더링 된다.

4.  Props의 값을 넣을 때 문자열 이외 [정수 변수 그리고 다른 컴포넌트 등]이 들어갈 경우 중괄호 {} 를 사용해서 감싸 주어야 한다.

5.  Props는  자바스크립트 객체가 된다.

6.  JSX 를 사용하는 경우에는 간단하게 컴포넌트의 Props를 넣을 수 있다.

7.  JSX를 사용하지 않는경우에는 React.createElement()를 사용하면 된다. (비추천)

 

(자세한 내용은 아래 참고)

 

 


 

Props의 특징

Props의 중요한 특징은 Read-only 즉 읽기 전용이라는 것이다.

값을 변경할 수 없다는 말

 

Props 값은 리액트 컴포넌트가 엘리먼트를 생성하기 위해서 사용하는 값이다.

이 값들이 엘리먼트 생성 도중에 바뀌어 버리면 제대로 된 엘리먼트가 생성될 수 없다.

 

마치 붕어빵이 다 구어진 이후에 속재료를 바꿀 수 없는 것과 마찬가지.

 

 다른 Props 의 값으로 엘리먼트를 생성하려면 어떻게 해야 할까?

그럴 때는 새로운  Props 값을 컴포넌트의 전달하여 새로운 엘리먼트를 생성하면 된다.

이 과정에서 엘리먼트가 다시 렌더링 되는 것.

 

여기서 잠시 자바스크립트 함수의 속성에 대해서 보자

 sum 이라는 이름을 가진 함수는 a와 b라는 두 개의 파라미터를 받아서 합을 리턴하는 함수이다.

이 함수에서는 a 와 b라는 파라미터에 값을 변경하지 않고 있다.

그리고 a 와 b라는 파라미터 집합의 값이 같은 경우에는 항상 같은 값을 리턴한다.

 

우리는 이러한 함수를 Pure 하다라고 한다.

 

말 그대로 함수가 순수하다 는 뜻인데 이 말은 입력 값을 변경하지 않으면

 같은 입력 값에 대해서는 항상 같은 출력 값을 리턴한다는 의미

 

순수하지 않은 경우

이 함수는 acount와 amount라는 파라미터를 받아 acount에 total이라는 값에서 amount를 빼는 함수이다.

쉽게 이야기하면 계좌에서 출금을 이야기한다.

 

이런 경우는 impure 하다라고 합니다 순수하지 않다는 뜻

 

모든 리액트 컴포넌트는 Props를 직접 바꿀 수 없고 같은 Props 대해서는 항상 같은 결과를 보여줄 것

 

리액트 컴포넌트가 자바스크립트의 함수와 같은 개념이라고 설명했었다.

그렇기 때문에 리액터 컴포넌트 의 입력으로 들어오는 Props는 자바스크립트 함수의 파라미터 와 같다.

함수의 결과는 리액트 엘리먼트가 된다.

 

정리하면 리액트 컴포넌트는 Props를 직접 바꿀 수 없고 같은 Props 가 들어오면 항상 같은 엘리먼트를  출력해야 한다

 

🧑🏻‍💻 Props 사용방법

Props는 컴포넌트의 전달할 다양한 정보를 담고 있는 자바스크립트 객체이다.

 

🧑🏻‍💻 JSX를 사용하는 경우

위 코드는 키와 값으로 이루어진 키값 쌍의 형태로 컴포넌트의 Props를 넣는다

App 컴포넌트가 있고 그 안에 Profile 컴포넌트를 사용하고 있다.

여기서 Profile 컴포넌트의 name, introduction, viewCount라는 세 가지 속성들을 넣어줬다.

 

중괄호 {}를 사용하면 무조건 자바스크립트 코드가 들어간다

그래서 마찬가지로 Props 값을 넣을 때 정수 변수 그리고 다른 컴포넌트 등이 들어갈 경우 중괄호 {} 를 사용해야 한다.

물론 문자열 도중 괄호 {}로 감싸 도 상관은 없다.

 

이렇게 하면 이 속성의 값들이 모두 Profile 컴포넌트의 Props로 전달되며

Props는 이와 같은 형태의 자바스크립트 객체가 된다.

 

그리고 Profile는 중괄호 {}를 사용해서 아래와 같이 Props의 값으로 컴포넌트도 넣을 수 있다

이렇게 하면 Layout 컴포넌트에 Props 값으로는

정수 값을 가진 width, height과 리액트 엘리먼트로는 Header, Footer가 들어오게 됩니다

 

이처럼 JSX를 사용하는 경우에는 간단하게 컴포넌트의 Props를 넣을 수 있다.

 

🧑🏻‍💻 JSX를 사용하지 않는 경우

JSX를 사용하지 않고 Props를 사용하려면 createElement()를 사용하면 된다.

type : 컴포넌트의 이름인 Profile 들어가고

props : 자바스크립트 객체가 들어갔다.

children ;  그리고 마지막으로 하위 컴포넌트가 없기 때문에 null

 

리액트로 개발할 때는  JSX를 사용하는 것이 좋다.

그렇기 때문에 코드는 참고만 하고 실제로Props를사용할 때는  JSX 사용하는 형태로 사용하자

 

 

 

 

 

 

위 내용은 '소플' 님의 '처음 만난 리액트' 영상을 참고하여 작성되었습니다.

 

 

 

Comments