2016-08-15 3 views
0

Bietet React eine Standardmethode zum Rendern einer Komponente außerhalb des normalen Flusses?Rendern eines Reaktivelements in einen verborgenen Bereich für die Messung

Ich möchte ein untergeordnetes Element in einem ausgeblendeten Bereich darstellen, seine Abmessungen messen und dann anhand dieser Informationen ändern, was von der render-Methode der Komponente zurückgegeben wird. Der Versuch, React.render zu verwenden, wirft einen Fehler:

Uncaught Invariant Violation: addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component's `render` method 

Antwort

1

Sie Sachen außerhalb des Bildschirms im normalen Fluss machen können. Führen Sie es als Teil des App-Starts durch und cachen Sie die gemessenen Abmessungen zwischen. Dann müssen Ihre Kindkomponenten das nicht tun.

+0

Der Inhalt der Komponenten (und damit auch ihre Abmessungen) hängt vom Anwendungszustand ab. Gibt es eine Möglichkeit, dies zu einem beliebigen Zeitpunkt im Lebenszyklus einer Anwendung zu tun? – giaour

+0

Sie können die Doppelrendering-Technik anwenden. Einmal rendern mit einem Sichtbarkeitszustand, der für die Komponente "versteckt" ist, die Messung im componentDidMount durchführen und den Status der Sichtbarkeit auf "sichtbar" setzen, was zu einem erneuten Rendering führt, diesmal mit den richtigen berechneten Messungen. Es ist eine Schande, dass reagieren nicht eine onLayout-Prop wie Reactive-native hat :) – hasseio

Verwandte Themen