• 티스토리 홈
  • 프로필사진
    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] state
        2020년 03월 03일
        • alpha brain
        • 작성자
        • 2020.03.03.:53
        728x90
        반응형

        (함수 컴포넌트로 state를 표현하는방법은 react hooks라는 방법으로 표현을 할수가 있다.

        이 부분은 좀더 공부하고 포스팅 해야 겠다.)


        State

        컴포넌트의 표현은 함수뿐만 아니라 클래스로 표현할수가 있다.

        class Clock extends React.Component {
          constructor(props) {
            super(props);
            this.state = {date: new Date()};
          }
          render() {
            return (
              <div>
                <h1>Hello, world!</h1>
                <h2>It is {this.state.date.toLocaleTimeString()}.</h2>
              </div>
            );
          }
        }
        
        const element = <Clock />;
        
        consloe.log(element);

        컴포넌트를 리액트 엘리먼트로 만들어 콘솔을 찍었을때 반환하는것들이다.

        신기하건 type property에 해당 컴포넌트의 class가 그대로 들어간다.

        아마도? 해당 엘리먼트 객체를 가지고  어느 시점에

        type property로 Clock 객체를 만들기 위해 가지고 있는것 같다. (개인 의견입니다.)

        constructor 부분에 this.state 를 보면 알수 있듯이 state property를 만들고 거기에 객체를 할당하는것을 볼수가 있다.

        state는 컴포넌트에서 쓰는 어떤 data 인것이다. 하지만 props와는 조금 다른 특징을 가지고 있다.

        • state를 지정할수 있는 유일한 공간은 constructor이다.
        • state는 읽기 / 쓰기가 가능하다.
        • state에 data를 update할때는 재할당의 방식을 사용하면 안된다.
        • state에 data를 update할때는 setState() 함수를 사용해야 한다.
        this.setState({data: 'new data'});

        변경하고 싶은 property를 이런식으로 변경해주면 이전에 가지고 있는 state객체와 병합된다.

         

        setState를 이용하여 업데이트 할때 이전 state값과 props로 온 data를 가지고 값을 만들수도 있다. 

        예를들어,

        this.setState({
          counter: this.state.counter + this.props.increment,
        });

        이런상황이 오면 state 값이 update될때와 props값이 새로 올때, 2가지를 처리해야 해서 값이 이상하게 될수가 있다.

        이때는 인자로 콜백을 사용하면 된다.

        this.setState((state, props) => ({
          counter: state.counter + props.increment
        }));

        콜백의 첫번째에는 state객체, 두번째는 props객체를 넘겨주면, 2가지 객체가 모두 업데이트 될때 함수가 실행된다.


        Data Flow

        부보의 컴포넌트가 state가 있던지 없던지 props가 있던지 없던지는 상관이 없다. 또한 그것이 data가 될수도 있다.

        단지 부모 컴포넌트에서 자식컴포넌트로 data를 전해주면 (자식컴포넌트에 어트리뷰트로 data를 주면) data를 받은 컴포넌트는 그 data를 props로 사용하게 된다.

        각 컴포넌트는 독립적인 '객체' 이므로 당연히 독립적으로 역할을 수행한다.


        State and Lifecycle – React
        A JavaScript library for building user interfaces
        ko.reactjs.org
        728x90
        반응형

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

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

        티스토리툴바