By ways4.eu
on Mon May 18 2020
Ein React-Pattern, das im Coding von React Frontends Berücksichtigung finden sollte, ist das Container-Komponenten-Pattern.
Ein Container ruft Daten ab und rendert dann die entsprechende Unterkomponente. So simpel.
“Entsprechend” bedeutet eine Komponente mit demselben Namensbestandteil:
GuineaPigsContainer => GuineaPigs
AnimalsContainer => Animals
EventListContainer => EventList
Konzept verstanden ?
Angenommen, du hast eine Komponente, die Kommentare anzeigt. Da du noch nichts vom Container-Komponenten-Pattern gehört hast, platzierst du deinen Code so, dass alles an einem Ort ist:
class CommentList extends React.Component { this.state = { comments: [] }; componentDidMount() { fetchSomeComments(comments => this.setState({ comments: comments })); } render() { return ( <ul> {this.state.comments.map(c => ( <li>{c.body}—{c.author}</li> ))} </ul> ); } }
Deine Komponente ist sowohl für das Abrufen als auch für das Präsentieren von Daten verantwortlich. Daran ist nichts „Falsches“, aber einige Vorteile von React werden damit nicht nutzbar, zB:
CommentList kann nur unter genau den gleichen Umständen wiederverwendet werden.
Die Markup-Komponenten sollten die Erwartungen an die benötigten Daten angeben. PropTypes sind dafür optimal.
Unsere Komponente hat eine Erwartung an die Datenstruktur, kann diese jedoch nicht ausdrücken. Wenn sich der json-Endpunkt ändert, wird der Datenfluß zur Komponente unterbrochen (silent).
Lass uns zunächst den Datenabruf in eine Containerkomponente verlagern:
class CommentListContainer extends React.Component { state = { comments: [] }; componentDidMount() { fetchSomeComments(comments => this.setState({ comments: comments })); } render() { return <CommentList comments={this.state.comments} />; } }
Lass uns nun CommentList überarbeiten, um comments als prop zu verwenden:
const CommentList = props =>
<ul>
{props.comments.map(c => (
<li>{c.body}—{c.author}</li>
))}
</ul>Tatsächlich eine ganze Menge….
Containerkomponenten können die Struktur und Lesbarkeit von React-Code erheblich verbessern und sie erleichtern das Lesen des Komponenten-Codes.
Probiere es aus !
The post Container Komponenten in React appeared first on Strictly Confidential.