-
[포스코x코딩온] React - Props[포스코x코딩온] 웹개발자 풀스택 부트캠프8기 2023. 9. 20. 01:09728x90
Props란?
- properties를 줄인 표현으로 컴포넌트 속성을 설정할 때 사용하는 요소
- props는 컴포넌트끼리 값을 전달하는 수단
- 상위 컴포넌트에서 하위 컴포넌트로 전달(단방향 데이터 흐름)
- 공식 문서에 따르면 props를 아래와 같이 요약한다.
- To pass props, add them to the JSX, just like you would with HTML attributes.
- To read props, use the 'function Avatar({ person, size })' destructuring syntax.
- You can specify a default value like 'size = 100', which is used for missing and 'undefined' props.
- You can forward all props with '<Avatar { . . . props} />' JSX spread syntax, but don't overuse it!
- Nested JSX like '<Card><Avatar /></Card>' will appear as 'Card' component's 'children' prop.
- Props are read-only snapshots in time: every render receives a new version of props.
- You can't change props. When you need interactivity, you'll need to set state.
https://react.dev/learn/passing-props-to-a-componentPassing Props to a Component – React
The library for web and native user interfaces
react.dev
함수형 컴포넌트 props
- 부모 컴포넌트에서 전달한 props는 함수형 컴포넌트에서 함수의 파라미터로 전달받으며, JSX 내부에서 { } 기호로 감싸서 사용한다.
- 자식 컴포넌트 코드
- 원래는 props를 쓰지만 { } 을 통해 구조분해 할당 가능
- ttitle, author, price, type props 받음
- function FunctionPropsComponent(props)인 경우
- {props.title} , {props.author}, {props.price}, {props.type}
- function FunctionPropsComponent({title, author, price, type})인 경우
- {title}, {author}, {price}, {type}
- defaultProps
- 부모 컴포넌트에서 props가 전달되지 않았을 때 기본값으로 보여줄 props를 설정하는 것
- propTypes
- 컴포넌트의 필수 props를 지정하거나 props의 타입을 지정할 때 사용
- JavaScript의 "유연한 특성"을 해결하기 위해 권장되는 기능
- 정해진 타입이 아닌 다른 타입으로 정보가 전달될 시, 제대로 동작은 하지만 console에 오류가 나온다.
import PropTypes from "prop-types"; function FunctionPropsComponent(props) { const { title, author, price, type } = props; const style = { textAlign: "-webkit-center", }; const divStyle = { backgroundColor: "#ffffc2", textAlign: "center", width: "550px", }; const imgStyle = { height: "200px", }; const textStyle = { textAlign: "initial", marginLeft: "90px", }; return ( <div style={style}> <div style={divStyle}> <h2>이번주 베스트셀러</h2> <img src="img/book.jpg" alt="book" style={imgStyle}></img> <h2>{title}</h2> <div style={textStyle}> <h4>저자: {author}</h4> <h4>판매가: {price}</h4> <h4>구분: {type}</h4> </div> </div> </div> ); } FunctionPropsComponent.defaultProps = { title= "하하", author="호호", price="12,000", type="소설", } FunctionPropsComponent.propTypes = { title: PropTypes.string, author: PropTypes.string, price: PropTypes.number, type: PropTypes.string, }; export default FunctionPropsComponent;
- 부모 컴포넌트 코드
- ttitle, author, price, type props 전달
import FunctionPropsComponent from "./FunctionPropsComponent"; function App(){ return( <> <FunctionPropsComponent title="나의 하루는 4시 40분에 시작된다." author="김유진" price="13,500원" type="자기계발서" ></FunctionPropsComponent> </> ); } export default App;
클래스형 컴포넌트 props
- 함수형 컴포넌트 props와 동일하게 사용하지만 불러오는 코드만 살짝 다르다.
- {this.props.name}으로 props앞에 this를 붙여야 한다.
- 자식 컴포넌트 코드
- 구조분해 할당도 가능
- {this.props.food}
import { Component } from "react"; import PropTypes from "prop-types"; class ClassPropsComponent extends Component { render() { const { food } = this.props; const style = { color: "red", }; return ( <h2> 저는 <span style={style}>{food}</span>를 좋아합니다. </h2> ); } } ClassPropsComponent.defaultProps = { food: "바나나", }; ClassPropsComponent.propTypes = { food: PropTypes.string, }; export default ClassPropsComponent;
※ props.children
- 부모 컴포넌트에서 자식 컴포넌트를 호출할 때 태그 사이에 작성한 문자열
- 자식 컴포넌트
- {props.children} 사용
- 부모 컴포넌트
728x90'[포스코x코딩온] 웹개발자 풀스택 부트캠프8기' 카테고리의 다른 글
[포스코x코딩온] React - Life Cycle, useEffect, Mount, Update, UnMount (0) 2023.09.25 [포스코x코딩온] React-Event Handling, 합성 이벤트, state, setState, useState, Hook (0) 2023.09.21 [포스코x코딩온] React - Component (1) 2023.09.19 [포스코x코딩온] React 프로젝트 생성 및 JSX 사용하기 (0) 2023.09.18 [포스코x코딩온] React의 시작 (2) 2023.09.18