Presentational 및 Container 구성 요소 패턴의 개요.
JavaScript의 인기 있는 React 라이브러리는 의견이 없는 것으로 유명합니다.
React를 어떻게 보든 개발자와 개발자 팀이 원하는 방식으로 앱을 빌드할 수 있는 자유를 제공하여 개발자가 애플리케이션을 빌드하는 방법에 대한 수동 접근 방식이라는 것을 부인할 수 없습니다.
다른 React 애플리케이션을 연구하고 다른 팀과 함께 구축된 다른 React 애플리케이션에서 작업할 때 몇 가지 일반적인 디자인 패턴을 발견하게 됩니다.
React 애플리케이션을 빌드하기 위한 인기 있는 디자인 패턴을 살펴보겠습니다.
프레젠테이션 구성 요소
UI의 모양과 느낌은 이러한 구성 요소에 따라 다릅니다. 데이터를 표시하는 것 외에도 응용 프로그램 내에서 종속성이 없습니다. 다음 목록을 고려하십시오.
const ListOfItems = (props) => {
return (
<ul>
{props.items.map((item) => (
<li key={item.id}>
<a href={item.url}>{item.name}</a>
</li>
))}
</ul>
);
};
위의 예에서 사용자 인터페이스에 소품으로 전달된 데이터를 표시하는 역할만 합니다. 이러한 구성 요소는 클래스 구성 요소 또는 UI 상태에 묶일 수 있는 상태 비저장 기능 구성 요소로 작성할 수 있습니다.
class TextInput extends React.Component {
constructor(props) {
super(props);
this.state = {
value: null
};
}
render() {
return (
<input
value={this.state.value}
onChange={(e) => this.setState({ value:
e.target.value })}
/>
);
}
}
위의 예에서 상태를 관리하는 것은 TextInput 클래스 구성 요소의 책임입니다.
컨테이너 구성 요소
컨테이너 구성 요소는 프레젠테이션 구성 요소보다 작업 방식에 더 큰 영향을 미칩니다. 여기에는 일반적으로 수명 주기에 대한 프레젠테이션 방법과 방법이 포함됩니다. 그들은 또한 데이터를 가져옵니다.
class SeriesContainer extends React.Component {
constructor(props) {
super(props);
this.state = {
series: [],
loading: false,
error: ""
};
}
componentDidMount() {
this.setState({ loading: true, error: "" });
fetch("https://api.tvmaze.com/schedule/web?date=2020-05-29")
.then((res) => res.json())
.then((data) => this.setState({ loading: false, series: data }))
.catch((error) =>
this.setState({ loading: false, error: error.message || error })
);
}
render() {
const { loading, error, series } = this.state;
return (
<div>
<h1> Tv Series </h1>
{loading && <p>Loading...</p>}
{!loading && series && <ListOfItems items={series} />}
{!loading && error && <p>{error}</p>}
</div>
);
}
}
위의 예에서 API가 탑재될 때 API에서 데이터를 가져오는 SeriesContainer 구성 요소를 만들었습니다. 또한 해당 데이터는 프레젠테이션 구성 요소인 ListOfItems로 전달됩니다. 이 패턴은 관심사를 분리하고 구성 요소를 재사용하는 이점이 있습니다. ListOfItems 표시 구성 요소는 SeriesContainer와 밀접하게 연결되어 있지 않으므로 모든 Container 구성 요소가 이를 사용하여 데이터를 표시할 수 있습니다.
최종 테이크 아웃
Dan Abramov는 프리젠테이션 구성요소를 컨테이너 구성요소와 구별하기 위해 이 디자인 패턴을 고안했습니다. 프리젠테이션은 모양을 담당하고 컨테이너는 상태 관리를 담당합니다. 이전에 더 인기가 있었음에도 불구하고 여전히 적합하다고 생각되는 모든 곳에서 이 패턴을 사용할 수 있습니다.
Reference
이 문제에 관하여(Presentational 및 Container 구성 요소 패턴의 개요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/heritio/an-overview-of-presentational-and-container-component-pattern-a4h텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)