ReactJS의 State와 Prop

제목: ReactJS State vs Props: 최적의 접근 방법 이해하기 소개 ReactJS 컴포넌트를 다룰 때, state와 props의 차이점을 이해하는 것이 중요합니다. AngularJS와 같은 다른 프레임워크에서 오는 많은 개발자들은 복잡성이 증가함에 따라 컴포넌트를 어떻게 구조화해야 할지 궁금해할 …

title_thumbnail(ReactJS State vs Prop

ReactJS의 State와 Prop)

제목: ReactJS State vs Props: 최적의 접근 방법 이해하기

소개

ReactJS 컴포넌트를 다룰 때, state와 props의 차이점을 이해하는 것이 중요합니다. AngularJS와 같은 다른 프레임워크에서 오는 많은 개발자들은 복잡성이 증가함에 따라 컴포넌트를 어떻게 구조화해야 할지 궁금해할 수 있습니다. 이 블로그 포스트에서는 ReactJS에서 state와 props를 다루는 방법을 탐구하고 응용 프로그램에 대한 최적의 접근 방법을 명확하게 제시하겠습니다.

Props와 State 이해하기

Props와 State는 모두 ReactJS에서 기본 개념이지만, 각각 다른 목적을 가지고 있습니다:


Props는 부모 컴포넌트에서 자식 컴포넌트로 전달되는 읽기 전용 속성(property) 입니다. 높은 수준의 컴포넌트에서 낮은 수준의 컴포넌트로 데이터를 전달하는 데 사용됩니다. Props는 자식 컴포넌트에서 수정할 수 없으며, 부모 컴포넌트에 의해 소유됩니다.

State는 변경 가능하며, 컴포넌트 자체에 의해 제어됩니다. State는 컴포넌트의 내부 데이터 또는 상태를 나타내며, setState() 메소드를 사용하여 수정할 수 있습니다. State를 업데이트하면 컴포넌트가 다시 렌더링됩니다.

ReactJS 방식

이제, 언급한 특정 시나리오를 다루겠습니다: AngularJS에서와 유사하게 ReactJS 컴포넌트 내에서 모델을 수정하는 것입니다. ReactJS에서는 props나 state 객체를 직접 수정하는 것을 피하고 모델의 변경 사항을 처리하기 위해 state를 사용하는 것이 권장됩니다.

예제에서 두 번째 접근 방식은 ReactJS 방식과 더 일치합니다. 텍스트 모델 속성을 컴포넌트의 일부로서 state로 만들면 쉽게 변경사항을 처리하고 필요할 때 모델과 동기화할 수 있습니다.


var PostEditor = React.createClass({
getInitialState: function() {
return {
text: ""
};
},
componentWillMount: function() {
this.setState({
text: this.props.post.text
});
},
updateText: function(e) {
this.setState({
text: e.target.value
});
},
savePost: function() {
this.props.post.text = this.state.text;
this.props.post.save();
},
render: function() {
return (
<input value={this.state.text} onChange={this.updateText}/>
<button onClick={this.savePost}/>Save</button>
);
}
});

이 접근 방식을 사용하면, 관심사 분리를 유지할 수 있습니다. 텍스트 값은 컴포넌트 state로 관리되고 변경 내용이 추적됩니다. savePost() 함수가 호출될 때 업데이트된 텍스트가 모델에 다시 할당됩니다.

복잡한 모델 다루기

모델이 복잡해질수록 컴포넌트를 관리 가능하고 유지 가능하게 유지하는 것이 중요합니다. Container/Component 패턴을 채택하는 것이 한 가지 전략입니다.

Container 컴포넌트는 상태(state)와 데이터 상호작용을 관리하는 책임을 갖고 있으며, 주요 모델을 보유하고 관련 데이터를 props로 자식 Component에 전달합니다. Components는 주로 프레젠테이션 역할을 하는데, Container에서 제공한 데이터를 받아 표시합니다.

이 패턴을 사용하면 상태 관리와 프리젠테이션 관련 관심사를 분리하여 코드를 모듈식이고 확장 가능하게 유지할 수 있습니다. 또한 단위 테스트 작성과 코드 품질 유지에도 도움이 됩니다.


var PostEditorContainer = React.createClass({
getInitialState: function() {
return {
text: ""
};
},

componentWillMount: function() {
this.setState({
text: getPostText()
});
},

updateText: function(text) {
this.setState({
text: text
});
},

savePost: function() {
savePostText(this.state.text);
},

render: function() {
return (
<PostEditor
text={this.state.text}
onChange={this.updateText.bind(this)}
onSave={this.savePost.bind(this)}
/>
);
}
});

Container/Component 패턴을 사용하여 관심사를 분리함으로써 모델의 복잡성을 관리하고 컴포넌트를 집중적이고 유지 가능하게 유지할 수 있습니다.

결론

ReactJS에서는 props와 state가 컴포넌트 내에서 데이터를 처리하는 데 명확한 역할을 합니다. 각각의 사용시기를 이해하는 것은 확장 가능하고 유지 가능한 애플리케이션을 구축하는 데 중요합니다. 기억하세요, props는 상위 컴포넌트에서 하위 컴포넌트로 데이터를 전달하는 데 사용되고, state는 내부 컴포넌트 상태 변경에 사용되어야 합니다.

ReactJS 방식에 따르고, 상태 변경을 관리하기 위해 state를 사용하고 복잡한 모델에는 Container/Component 패턴을 채택함으로써 강력하고 효율적인 ReactJS 애플리케이션을 구축할 수 있습니다.

props와 state의 차이에 대한 자세한 내용은 ReactJS 문서를 참조하세요. 즐거운 React 코딩하세요!

참고 자료 : 

reactjs

Leave a Comment