Script

구조분해 할당과 Props / default Props 본문

항해99/3주차 주특기 기초

구조분해 할당과 Props / default Props

scripter. 2022. 7. 23. 23:04

1. 구조분해 할당과 Props

 

지금까지 우리는 이런식으로 props 값을 받아왔다.

function Todo(props){
	return <div>{props.todo}</div>
}

todo라는 props를 사용하는 모든 곳에서 props.를 붙여줘야만 했다.

이것을 조금 더 짧게 쓰는 방법이 있는데, 바로 자바스크립트의 구조 분해 할당을 이용하는 것이다.

 

구조분해 할당이 무엇인지는 아래 영상을 참고하자.

https://www.youtube.com/watch?v=lV7ulA7R5Nk 

 

props는 object literal 형태의 데이터이다. 그래서 우리는 구조 분해 할당을 이용할 수 있다.

 

예시) 훨씬 간결해진 모습이다.

function Todo({ title }){
	return <div>{title}</div>
}

 

만약 여러개의 props를 받는다면 아래와 같이 { } 안에 여러개의 props를 그대로 써주면 된다.

function Todo({ title, body, isDone, id }){
	return <div>{title}</div>
}

 

2. default Props

default Props란?

 

defaultProps란, 부모 컴포넌트에서 props를 보내주지 않아도 설정될 초기 값이다.

 

예를 들어보자.

// components/Child.js

import React from 'react';

function Child({ name }){
	return <div>내 이름은 {name} 입니다. </div>
}

export default Child

 

 

Child 컴포넌트의 name은 props 정보를 받기 전까지는 없는 상태다.

따라서 내 이름은 ""입니다. 가 출력될 것이다.

근데 저 ""을 공란으로 두면 굉장히 어색할 것이다.

 

그래서 props를 받기 전이라도 일단 임시적으로 사용할 수 있는 props를 설정할 수 있다.

이는 Child 컴포넌트에서 직접 가능하다.

이후에 부모 컴포넌트에서 name props가 오게되면 설정된 defaultProps는 사라지고 내려받은 props로 

값이 바뀌게 된다.

 

default Props 지정하기
// components/Child.js

import React from 'react';

function Child({ name }){
	return <div>내 이름은 {name} 입니다. </div>
}

// 이렇게 설정합니다.
Child.defaultProps={
	name: '기본 이름'
}

export default Child

 

다른방법

import React from 'react';

// 구조 분해 할당 문법을 사용하면 이렇게도 할 수 있다.
function Child({ name = '기본이름' }){
	return <div>내 이름은 {name} 입니다. </div>
}

export default Child

 

'항해99 > 3주차 주특기 기초' 카테고리의 다른 글

State 응용(input, button) / 리액트에서의 불변성  (0) 2022.07.25
State  (0) 2022.07.25
Props.children  (0) 2022.07.23
Props  (0) 2022.07.23
JSX  (0) 2022.07.23
Comments