-
[movie_app_2] 컴포넌트, props프로젝트/[react]movie_app 2018. 4. 2. 13:04
프로젝트를 시작하기 전에, 컴포넌트들을 만든다.
react는 js 안에 html 이 존재하는 구조 -> jsx라고 한다. : 컴포넌트를 만들때 사용하는 언어
각 컴포넌트마다 다른 파일에 작업(을 선호)
render() : 이 컴포넌트가 무엇을 보여주는지 알려주는 함수
js 파일에서 reactDOM을 사용해서 웹에 컴포넌트를 지정된 엘리먼트 자리에 렌더하는것!
작성된 컴포넌트를 다른 컴포넌트에 넣을 수 있고 import 하여 다른 파일의 컴포넌트 안에도 넣을 수 있다!
react의 주요 컨셉 2개 - state, props
props : 부모 컴포넌트가 자식 컴포넌트에게 정보를 전달
array map을 사용 : 엘리먼트가 많을수록 key를 주어야함.
movies.map((movie, index) => {return <Movie title={movie.title} poster={movie.poster} key={index} />})index는 map에서 현재 제공하는 리스트의 숫자를 의미함.
검색 결과 unique한 문자열로 지정해도 된다.
propTypes를 통해 형식 지정 : 자식 컴포넌트가 있는 파일에 !
react 업데이트로 인해, propTypes가 분리되었다. yarn add prop-types 해줌
import PropTypes from 'prop-types';propTypes를 import 한 뒤
static propTypes = { //PropTypes라고 썼다가 에러났당.title: PropTypes.string,poster: PropTypes.string}이런식으로 형지정
title: PropTypes.string.isRequired 로 필수인지 아닌지도 체크
검색 결과 defaultProps를 사용할 수도 있음. props가 없을 때 default로 들어가는 값을 지정
타입이 유동적인 경우를 위해서 oneOfType을 설정할수도 있음.
static propTypes = {title:PropTypes.oneOfTypes([PropTypes.string,PropTypes.double])}이런식으로인듯
자식 엘리먼트로 들어오는 모든 props에 대해서 검사해야되는건 아닌것같다.
개인적으로 먼저 만들어보고, 검색하면서 배우는 학습방법이 나한테 잘 맞는것같다..ㅎㅎ
노마드코더 https://academy.nomadcoders.co/ 의 [실전]ReactJS로 웹 서비스 만들기를 수강하며 정리한 내용입니다.
'프로젝트 > [react]movie_app' 카테고리의 다른 글
[movie_app_6] ajax (0) 2018.04.04 [movie_app_5] stateless functional components (0) 2018.04.03 [movie_app_4] loading state (0) 2018.04.03 [movie_app_3] 컴포넌트 Lifecycle과 state (0) 2018.04.02 [movie_app_1] movie app 시작하기 (0) 2018.04.02