2016-07-22 29 views
4

In meinem Job haben wir uns entschlossen AG-Grid in reagieren Variante zu verwenden: https://www.ag-grid.com/best-react-data-grid/index.phpAG-Grid mit Redux

Derzeit unsere Architektur für React ist Redux. Von meinem kleinen Wissen von AG-Grid kann ich sagen, dass es nicht sehr gut zu dieser Architektur passt. AG-Grid behält seinen Gesamtzustand in der Komponente. Es ist umständlich oder gar nicht schlau zu versuchen, es mit Redux kraftvoll und vollständig zu verbinden.

Ich kann damit leben, aber zumindest muss ich auf die Zeilenmodelländerungen achten - das bedeutet Abrufen neuer Zeilen, Sortieren, Filtern (ich muss nicht auf Zelländerungen achten). Ich habe 2 Ideen, wie ich darauf achten und es mit Redux verbinden kann.

Option 1 - Verwenden Sie gridOptions.onModelUpdated()

Mit gridOptions.onModelUpdated() Ich weiß, wann oder Art Filterung ausgeführt wurde, aber ich kann nicht auf alle Zeilen angezeigt (docs) erhalten:

Staat 1: Row Data

API: Es gibt keine API, um diese Daten zu erhalten. Allerdings wurde es von der Anwendung bereitgestellt, so dass Sie es bereits haben sollten.

So kann ich eine redux Aktion nicht versenden, da ich keine Daten habe, um es zu aktualisieren.

Option 2 - datasource.getRows()

I Aktionen mit neuen Zeilen versenden können. Ich habe jedoch kein onReset/onRowsDeleted/... Ereignis gefunden, daher weiß ich nicht, wann Redux zu löschen ist. Update Ich kann wissen, dass vorherige Zeilen gelöscht wurden, wenn params von datasource.getRows(params)params.startRow === 0 ist.

Frage

Vielleicht finde ich einen Weg, wie eine der zwei Optionen zu verwenden, aber meine Frage ist:

Sind die guten Ideen, wie AG-Grid-Redux verbinden?

+0

haben Sie jemals Ihre Lösung herausgefunden? Ich sehe mir ein ähnliches Setup an und ich denke, es ist ein wenig "knifflig", um die Datenquellen-Hooks zu implementieren ... Vollkommen machbar, besonders für 1-malige Anfragen, aber nicht wirklich brauchbar für Änderungen an anderen Daten in dem Staat, muss das AG-Grid neu laden/aktualisieren – zeroasterisk

+0

Mann, ich wurde gebeten, einen Kern zu machen. Ich werde einen Montag haben. – zatziky

+0

@zeroasterisk Hier ist der Kern: https://gist.github.com/zatziky/72f0826e97a011d3f2af75df84981b61 Es ist von unserem PoC und ich würde nie so ein Chaos veröffentlichen ... Es funktioniert aber. Ich veröffentliche es nur wegen der Nachfrage. :) Wir haben einige zusätzliche Funktionen wie das Nur-Lesen-Grid und einige andere Dinge hinzugefügt. In unserem aktuellen Projekt haben wir enge Termine, so dass es nicht genug Platz gibt, um diese Komponente zu refaktorieren. Sobald wir es umgestalten, werde ich den Link aktualisieren. – zatziky

Antwort