Come dovrei strutturare i componenti di React Redux quando richiedi i dati da un'API?

1

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?

    
posta Stu Pegg 02.01.2018 - 23:23
fonte

1 risposta

0

Avendo pensato a questo per un bel po 'di tempo, posso vedere che una delle mie asserzioni è sbagliata:

  • 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.

Stavo pensando che la chiamata all'API sarebbe stata suggerita dalla modifica della proprietà del componente, che avrebbe portato a più richieste da più componenti.

In realtà, la chiamata API può essere attivata dall'evento di aggiornamento del singolo componente senza timore di duplicare: solo l'istanza del componente viene aggiornata dall'utente.

    
risposta data 06.01.2018 - 09:30
fonte

Leggi altre domande sui tag