Frontend/React.js

React의 component, state, props

오후 6시의 봄 2023. 1. 31. 00:09

Component

- React의 Component는 JSX라는 언어로 쓰여짐

- 화면을 Component 단위로 나누어 재사용성을 높임

- 각 컴포넌트는 render 함수를 통해 최상위 div 태그 1개로 그려짐

- 컴포넌트 초기화를 위해서는 constructor 함수를 활용하여 props 정의

State

- 상위 컴포넌트의 정보

- 하위 컴포넌트로 props 값 전달 가능

- state 값이 변경되면, 해당 state를 가진 컴포넌트의 render 함수를 통해 화면이 다시 그려짐

+ 개인 의견

Props

- 하위 컴포넌트(태그)의 속성(attribute)로 전달되는 값

- props 변경시 하위 컴포넌트의 render가 다시 실행 됨


+ 개인 의견

업무할 때 MVVM 디자인패턴만 사용하다가 리액트 기초 강의에서는 화면과 로직을  모두 한 페이지에서 작성하는 방식을 사용하니 뭔가 신기했다.... 같이 볼 수 있으니까 편한 것 같기도 하고.. 익숙치 않아서 가독성이 떨어지는 느낌도 났다.

리액트는 프레임워크가 아니고 라이브러리라고 하니 다양한 디자인패턴을 활용할 수 있는 듯 한데, 개발자에게 or 개발하는 앱의 특성을 따져서 디자인패턴을 정하는 것도 꽤나 중요할 것 같았다.

 

ember.js에서는 아래와 같이 template에 선언해둔 값을 그냥 component로 바로 땡겨올 수 있고, 하위 컴포넌트에 해당 값을 전달하는 것도 {} 이런 표현 없이 그냥 전달할 수 있는게 편하다고 생각했다..ㅎㅎㅎㅎ

// ember.js
// (상위컴포넌트)/template.hbs
{{(하위컴포넌트)
title=title
}}

// (상위컴포넌트)/component.js
export default Ember.Controller.extend({
  title: "안녕",
});

// react
class App extends Component {
  constructor(props){
	super(props);
	this.state = {
      subject: {title: "안녕"},
    }
  }
  render() {
    return (
      <div className="App">
        <(하위컴포넌트) title={this.state.subject.title}></(하위컴포넌트)>
      </div>
    );
  }
}

하지만 이건 내가 엠버에 익숙하고 리액트는 어색하기 때문이겠지. 수많은 개발자가 리액트를 배우고 활용하는 이유가 있을 거니까.. 그게 뭔지 피부로 느껴보기 위해 나도 공부를 시작한 것 아니겠는가..!!! 장단점을 비교해보면서 공부해봐야될 것 같다.

 

참고: 인프런 생활코딩 - React 10~19강