Nel tutorial di ReactJS sei guidato nella costruzione di un sistema di commenti. È un tutorial molto utile per capire la libreria ReactJS, ma ci sono alcune scelte progettuali che non riesco a capire appieno.
Quindi iniziamo dalla configurazione iniziale:
Il sistema è composto da tre componenti: CommentBox, CommentList, Comment e CommentForm. La gerarchia è la seguente
CommentBox
CommentList
Comment
CommentForm
Il tutorial implementa quindi tutte le logiche di recupero dei dati nel componente CommentBox, che quindi passano questi dati a CommentList che lo esegue nel DOM.
Q1: perché? È una scelta arbitraria o c'è qualche ragionamento dietro?
Quindi, quando il tutorial arriva alla logica della presentazione di nuovi commenti, afferma:
When a user submits a comment, we will need to refresh the list of comments to include the new one. It makes sense to do all of this logic in CommentBox since CommentBox owns the state that represents the list of comments.
Q2: Perché CommentBox rappresenta un elenco di commenti quando c'è un altro componente che lo rappresenta (CommentList, come suggerisce il nome)?
Inoltre, implementando la logica di invio, il codice che gestisce il commento POST al server fa parte del componente CommentBox, racchiuso in un metodo che viene passato a CommentForm come un callback. Quindi, quando viene inviato il modulo CommentForm, chiama questa funzione CommentBox per eseguire la richiesta del server, mentre il resto della logica è implementato nelle funzioni di CommentForm.
Q3: Perché non è implementata tutta la logica di invio in CommentForm?
EDIT: come ho affermato in un commento, "Ho già compreso l'architettura dell'applicazione e il concetto di box, sto discutendo sui dettagli di" implementazione individuale "e perché alcune scelte sono preferibili rispetto ad altre "