Ho una casella di ricerca che utilizzerò su pagine diverse (io uso il termine "pagina" in modo approssimativo qui).
- La casella di ricerca inserisce il suo valore (la stringa di ricerca) nello stato di Redux.
- I risultati sono popolati da un'API esterna
- Un altro componente mostra i risultati della ricerca come elenco.
Stato di esempio:
{
searchString: 'Cheeeese',
results: [
'I like Cheeeese!',
'There is no Cheeeese!!',
],
}
Ciò che mi sconcerta è questo: se ci sono più caselle di ricerca (su diverse "pagine") dove posso affidare la responsabilità di richiedere i risultati dall'API?
- C'è più di un posto in cui viene utilizzata la casella di ricerca, quindi la casella di ricerca (né un wrapper della casella di ricerca) può essere responsabile senza chiamate duplicate.
- L'azione di Redux non dovrebbe avere un effetto collaterale, quindi il riduttore non può essere responsabile.
- Ogni pagina non dovrebbe essere responsabile, poiché ciò porterebbe alla duplicazione del codice.
La cosa più vicina alla sanità mentale che riesco a trovare è un componente non di rendering il cui unico scopo è quello di visualizzare la voce di stato searchString
e di attivare una richiesta all'API (aggiornando results
sulla risposta).
Questo è un approccio ragionevole, oppure il mio problema è la struttura dei componenti stessi?