Ich habe zur Zeit ein Problem, von dem ich mir nicht sicher bin, ob ich nur das größere Bild nicht sehe (oder vielleicht gar nicht mache) oder ob das in redux gilt ...React-Redux - Senden einer Aktion an Komponenten
Ich habe ein SVG-Diagramm mit einer festen Größe. Es kann passieren, dass der Benutzer ein Panel auf meiner Seite öffnet, was die Breite des Diagramms reduziert. Dies führt dazu, dass mein Diagramm komprimiert aussieht. Um dies zu beheben, sollte das Diagramm mit aktualisierten Dimensionen neu gerendert werden, damit alles wieder gut aussieht.
Also ... Ich habe eine Komponente, die der Benutzer klickt, um das Panel zu öffnen. Diese Komponente sollte eine Aktion auslösen, idealerweise etwas allgemein und wiederverwendbar wie "rerenderSVG". Ich könnte den Standard-Redux-Workflow verwenden und meinen Reducer dazu bringen, eine Flagge in meinem Zustand zu setzen und alle meine SVG-Komponenten darauf hören zu lassen. Aber das fühlt sich an wie Overkill. Das ist nichts, was ich in meinem Zustand will, ich will nur eine Aktion, die an alle meine montierten Komponenten gesendet wird, wie "Hey, Komponenten, das ist gerade passiert, wenn es dich betrifft: bitte reagiere".
Dies kann leicht in Flussmittel, aber in Redux getan werden ... Ich weiß es nicht. Kann dieses Muster implementiert werden und trotzdem dem Redux-Weg entsprechen?
Und wenn dieses Problem so alltäglich ist, gibt es bereits Tausende von Beiträgen: Sorry! Aber ich wusste nicht wirklich, für welche Schlüsselwörter zu schauen ...
Bitte korrigieren Sie mich, wenn ich falsch liege, aber ist nicht der Reducer der falsche Ort für mein Problem? Wie ich schon sagte: Ich möchte meinen Zustand nicht ändern. Ich möchte, dass eine Aktion an eine Komponente gesendet/gesendet wird. Der Reducer könnte nur einen Flag zu meinem App-Status hinzufügen, damit meine Komponenten darauf hören können. ... je mehr ich darüber nachdenke, desto mehr habe ich das Gefühl, dass dies nicht mit redux möglich ist, aber ich wollte trotzdem fragen ... – hurrtz
Wenn es nur eine Komponente ist, die auf die neue reduzierte Größe achten muss, dann ist wahrscheinlich Reduzierer kein guter Platz. Wenn es mehrere Komponenten gibt, die auf eine neue reduzierte Größe achten müssen, dann wahrscheinlich ja. Ich nehme an, dass Sie im Fluss sind, abonnieren Sie direkt in der Komponente und verwenden Sie SetState, um einen neuen Renderer auszulösen und nicht im Speicher zu speichern. Ja. In diesem Sinne haben Sie recht, es gibt keine Möglichkeit, die Komponente zu benachrichtigen, ohne den Status in redux tatsächlich zu ändern. Sie könnten wahrscheinlich eine Redux-Middleware schreiben, aber ich denke nicht, dass das eine gute Lösung für diesen Anwendungsfall ist. –