Sono stato in difficoltà per un paio di giorni, cercando di capire il modo "reagire" per farlo.Come gestire lo stato in un componente ad albero in reactjs
Fondamentalmente, ho un albero, un elenco di liste (di elenchi ...) che possono essere annidate arbitrariamente, e voglio un componente che visualizzerà questo e consentirà anche il riarrangiamento.
Ecco miei dati:
var data = [{
id: 1
}, {
id: 2, children: [
{
id: 3, children: [{id: 6}]
}, {
id: 4
}, {
id: 5
}]
}]
Il mio primo passo era quello di avere solo un singolo componente "albero" che costruisce le liste nidificate di elementi DOM nella sua funzione render (look at the code here). In realtà ha funzionato abbastanza bene per un piccolo numero di elementi, ma voglio essere in grado di supportare centinaia di elementi, e c'era un costo di re-rendering molto alto quando un elemento veniva spostato all'interno dell'albero (~ 600ms quando c'erano poche centinaia elementi).
Quindi penso che avrò ciascun "nodo" dell'albero come istanza di questo componente. Ma ecco la mia domanda (scusa per la lunga introduzione):
Se ciascun nodo esegue query dinamiche per l'elenco, gli ID figli provengono da un "database" centrale e lo memorizzano nello stato? O il nodo più in alto carica l'intero albero e passa tutto attraverso i sostegni?
Sto ancora provando a pensare a come lo stato & deve essere gestito da & diviso.
Grazie
Tutto è un albero qui, giusto?È possibile riutilizzare il componente Tree per renderlo Tree child invece di considerarne uno di primo livello. Non ho provato il rendering ricorsivo, ma dovrebbe funzionare. Per ogni componente Tree, renderizza i suoi figli immediati e passa quei bambini ai loro figli, ecc. Inoltre, assicurati di impostare l'attributo 'key' sui componenti in un ciclo in modo che React possa tenerne traccia. –
oh l'attributo "chiave"? Non l'avevo visto da nessuna parte nei documenti. Lo proverò –
L'attributo "chiave" non è evidente, ma è citato in [Bambini dinamici] (http://facebook.github.io/react/docs/multiple-components.html#dynamic-children) dei documenti di Components. –