카테고리 없음

3장 컴포넌트

parkrams 2023. 6. 19. 17:29
728x90

ES6의 화살표 함수

  • 화살표 함수(arrow function)는 ES6 문법에서 함수를 표현하는 새로운 방식
  • 기존 방식을 아예 대체하진 않음
  • 함수를 파라미터로 전달할 때 유용
setTimeout(function() 
    console.log('hello world');
}, 1000);    
);

--->

setTimeout(() => {
    console.log('hello world')
}), 1000);
  • 이 문법이 기존 function을 대체할 수 없는 것은 용도가 다르기 때문
  • 가르키고 있는 this 값이 다름

3.3 Props

  • props는 properties를 줄인 표현.
  • 컴포넌트 설정을 사용할 때 사용하는 요소
  • props를 랜더링 할 때는 JSX 내부에서 { } 기호로 감싼다.
  • 사용 방법
import React from 'react';

const MyComponent = (props) => {
  return <div>나으 새롭고 멋진 컴포넌트 내 이름은 {props.name}다</div>;
};

export default MyComponent;
  • name이 지정 되지 않았을 때 기본 name 사용 방법
import React from 'react';
import MyComponent from './MyComponent';

const App = () => {
  return <MyComponent />;
};

MyComponent.defaultProps = {
  name: '기본이유',
};

6-21

태그사이의 내용을 보여주는 children
  • 컴포넌트 태그사이에 내용을 보여주는 props
const App = () => {
  return <MyComponent>랙트</MyComponent>; // MyComponent 태그사이에 작성한 랙트라는 문자열을 보여주려면  내부에서 보여주려면 props.children 값을 보여 주어야 한다.

};
 const MyComponent = (props) => {
   return (
     <div>
       나으 새롭고 멋진 컴포넌트 내 이름은 {props.name}다<br />
       children 값은 {props.children}
       입니다.
     </div>
   );
 };
비구조화 할당 문법을 통해 props 내부 값 추출
  • props 값을 조회할 때 props. 이라는 키워드를 붙이는데 이런 작업을 편하게 하기 위해 ES6의 비구조화 할당문법을 사용해 내부 값을 바로 추출하는 방법이 존재
const MyComponent = (props) => {
  const { name, children } = props;
  return (
    <div>
      안녕 내이름은 {name} 이고 <br />
      자식은 {children} 이야
    </div>
  );
};

MyComponent.defaultProps = {
  name: '기본 이름',
};

export default MyComponent;
  • 객체에서 값을 추추하는 문법 - 비구조화 할당 (destructuring assignment)
  • 이 문법은 구조 분해 문법 이라고도 불리며, 함수의 파라미터 부분에서도 사용 가능.
  • 만약 함수의 파라미터가 객체라면 그 값을 바로 비구조화 해서 사용하는 것
// 함수의 파라미터가 객체인 경우 바로 비구조화 해서 사용 
const MyComponent = ({ name, children }) => {
  return (
    <div>
      안녕하세요 제 이름은 {name} 입니다. <br />
      자식은 {children}
      입니다.
    </div>
  );
};
propTypes를 통한 props 검증
  • 컴포넌트의 필수 props를 저장하거나 props의 타입(type)을 지정할 때는 propTypes 를 사용
  • propTypes를 사용하려면 코드 상단에 import 구문을 사용하여 호출
import PropTypes from 'prop-types';


// export default MyComponent 위에 작성 

MyComponent.defaultProps = {
  name: ' 기본 이름 ',
};

MyComponent.propTypes = {
  name: PropTypes.string,
};
  • 이렇게 설정하면 name 값은 무조건 문자열 형태로 전달 받아야 함
  • name에 스트링 이외의 문자를 넣으면 개발자 도구 console 탭에 타입이 잘못 되었다고 알려줌 - 프로그램상 오류는 나지 않음

-------- 23 - 7 - 5 리액트 !!!!

3.3.6.1 Required를 사용하여 필수 propTypes 설정
  • 경고 메시지를 띄워 주는 작업 -
    • isRequired를 붙여 준다
    • favoriteNumber라는 숫자를 필수 props로 지정
const App = () => {
  return (
    <MyComponent name="리액트" favoriteNumber={8}>
      여기가 자식?
    </MyComponent>

3.4.1 클래스형 컴포넌트의 state

728x90