Is a react container component an instance of the adapter pattern?
No, non lo è. È qualcosa che nel mondo di React si chiama il modello del componente del contenitore . Come modello generale, però, si adatta alla "delegazione", come già menzionato da Thomas Junk nella sua risposta.
Ma più di un modello, il "componente del contenitore" si basa su un principio: Il principio della singola responsabilità .
Invece di avere un componente che esegue due funzioni: presentazione (1) e recupero dei dati e interazioni di business logic (2), si separano i due. Il componente contenitore gestisce i dati, le azioni, le interazioni commerciali con il resto dell'app, mentre il componente di presentazione gestisce solo la presentazione con oggetti di scena ricevuti dal contenitore e tutte le interazioni dell'utente vengono passate al componente contenitore anziché interagire con il resto di l'applicazione.
Questo ha alcuni vantaggi offerti da Dan Abramov , il creatore di Redux:
Better separation of concerns. You understand your app and your UI better by writing components this way.
Better reusability. You can use the same presentational component with completely different state sources, and turn those into separate container components that can be further reused.
- Presentational components are essentially your app’s “palette”. You can put them on a single page and let the designer tweak all their variations without touching the app’s logic. You can run screenshot regression tests on that page.
- This forces you to extract “layout components” such as Sidebar, Page, ContextMenu and use this.props.children instead of duplicating the same markup and layout in several container components.