2015-11-28 5 views
5

Ho due componenti A e B. Voglio passare tra questi due componenti nella pagina.In che modo la composizione delle query con i sindacati funziona con l'albero figlio principale trasmesso tramite oggetti di scena in Om. Avanti

(defui A) 
(defui B) 

Una soluzione è quella di utilizzare un componente principale C:

(defui C 
    (render 
    (let [{:keys [activeView]} props] 
    (if (= activeView 'A') 
     (renderA) 
     (renderB))))) 

Il problema è query. C deve interrogare sia per A che B, anche se uno di essi viene visualizzato.

Ho bisogno di C per non essere coinvolto nella query, o query solo per A o B.

Sono questi veri, o ci sono soluzioni:

  • Un componente bambino può interrogare solo i suoi oggetti di scena, che è passato dal suo genitore.
  • Un componente padre deve interrogare i propri figli in modo che possano passarli ai figli.
  • Solo il componente root richiede app-state.

risposta

2
  • Un componente bambino può interrogare solo i suoi oggetti di scena, che è passato dal suo genitore.

    • nel proprio contesto, sì, è vero. Può, tuttavia, accedere alle chiavi di stato di primo livello e utilizzare i collegamenti. Vedi questo tutorial per maggiori informazioni.
  • Un componente padre deve interrogare i propri figli in modo che possano passarli ai figli.

    • In parole povere, i componenti principali aggregano le query dei figli, componendo nella radice. Il componente root deve avere la query completa per l'applicazione (questo è ciò che significa "query di composizione alla radice")
  • Solo il componente root esegue una query sullo stato dell'app.

    • Non proprio. Il componente root otterrà tutti gli oggetti di scena ed è responsabile del loro passaggio ai sotto-componenti, ma il "interrogare lo stato dell'app" stesso viene eseguito nel metodo read del parser.

io consiglio di fare tutti i tutorial nel Om Next Wiki per una migliore comprensione di come fare le cose per bene.

Per quanto riguarda il problema specifico, è sempre possibile effettuare C implementare IQueryParams e fare in modo che la query del sottocomponente corrente (di A o di B) sia presente in un parametro di query.

Problemi correlati