• 티스토리 홈
  • 프로필사진
    alpha brain
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
alpha brain
  • 프로필사진
    alpha brain
    • 분류 전체보기 (93)
      • SOFTWARE DEVELOP (68)
        • REACT.JS (3)
        • WEBPACK (4)
        • HTML&CSS (2)
        • EXPRESS (0)
        • DATABASE (0)
        • NODE.JS (3)
        • JAVASCRIPT (24)
        • DOCKER (1)
        • Linux (3)
        • Git (6)
        • GRAPHQL (0)
        • Datastructure (7)
        • Development (6)
        • HTTP (1)
        • Programming Paradigm (1)
        • Algorithm log (5)
        • DEV log (1)
        • Project log (0)
        • I don't know yet (1)
      • 경제, 재무 (23)
      • 여행 (0)
      • 시사, 상식 (2)
  • 반응형
    250x250
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [ReactJS] JSX 와 Props
        2020년 03월 03일
        • alpha brain
        • 작성자
        • 2020.03.03.:52
        728x90
        반응형

        JSX

        React는 별도의 파일에 마크업과 로직을 넣어 기술을 인위적으로 분리하는 대신, 둘 다 포함하는 “컴포넌트”라고 부르는 느슨하게 연결된 유닛으로 관심사를 분리합니다. 이후 섹션에서 다시 컴포넌트로 돌아오겠지만, JS에 마크업을 넣는 게 익숙해지지 않는다면 이 이야기가 확신을 줄 것입니다. - React 공식문서


        이 말을 100% 다 이해는 못했지만 jsx는 마크업과 로직을 인위적으로 분리하지 않는 방식을 말하는것 같다.

        const element = <h1>Hello, world!</h1>; // this is jsx

        마크업을 그냥 변수에 넣어어 쓴다.

        그냥 html로 보일수 있지만 이것은 javascript이다. 아마 컴파일할때 javascript으로 바뀌어서 컴파일될것이다.

        const element = <h1>Hello, {formatName(user)}!</h1>;
        console.log(element);

        콘솔로 찍어보면(react로 컴파일될수 있는 환경을 만들어야 한다. 일반 브라우저에서 콘솔찍으면 당연히 안나옴!)

        콘솔을 찍어보면,

        객체 형태이고 여러 프로퍼티가 있는것을 볼수가 있다. 그중에서 props property에 data가 있는것을 볼수가 있다.


        props

        props 는 react element 객체의 property중 하나로,

        객체형태를 가지고 있다.(외부에서 받은 data라고 생각하면 편할것 같다.)

        react의 element는 사용자 정의 컴포넌트로도 나타낼수가 있다. (이것이 강점인것 같다.)

        function Welcome(props) {
          return <h1>Hello, {props.name}</h1>;
        }
        
        const element = <Welcome name="Sara" />;// 사용자가 정의한 컴포넌트 엘리먼트
        
        
        ReactDOM.render(
          element,
          document.getElementById('root')
        );

        react는 사용자가 정의한 컴포넌트를 발견하면 해당 어트리뷰트data를 연결된 함수(컴포넌트)에 "props" 라는 객체로 넘긴다.

        const element = <Welcome name="Sara"/>;
        
        console.log(element);

        어트리뷰트로 설정한 "Sara" data가 props에 들어가 있는것을 볼수가 있는데 바로 이 props가 연결된 함수(컴포넌트)에 인자로 들어가게 되는 것이다.

         

        props는 읽기 전용

        컴포넌트에서서 받은 props들은 그 data자체를 수정하여서는 안된다. (순수함수처럼 작동해야 한다.)

        function sum(a,b){
          return a + b;
        }
        // this is pure function

        순수함수 input값에 대하여 항상 일정한 결과를 반환한다. (들어온 a,b 값을 바꾸지 않는다.)

        function withdraw(account,amount){
          account.total += amount;
        }
        //this is not a pure function

        account의 total을 바꾸는 (결국 account의 값을 바꾼다.) 함수이기 때문에 순수함수가 아니다.

        즉, props는 아래 2번째 예시처럼 사용해서는 안되는것이다.

        모든 React컴포넌트는 자신의 props를 다룰 때 반드시 순수 함수처럼 동작해야 합니다. - react 공식문서

        728x90
        반응형

        'SOFTWARE DEVELOP > REACT.JS' 카테고리의 다른 글

        [ReactJS] Flux패턴과 Redux  (0) 2020.05.28
        [ReactJS] state  (0) 2020.03.03
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바