データをフェッチし、既存のレンダリング フレームワークを使用して表示する Android コンポーネントをラップするネイティブ UI コンポーネントを実装しようとしています ( を使用AdapterView
)。データがどうなるかは事前にわからないため、このコンポーネントの高さと内容は完全に任意です。これは、レンダリングされたコンポーネントが別のもの (画像など) を非同期的に要求する場合を除いて、ほとんど問題なく動作します。その場合、画像が取得され、ImageView
「表示」されますが、UI には何も表示されません (文字通り、適切なサイズの透明なビューのように見えます)。
これらのビューが通常の Android で問題なく動作することはわかっていますが、画像がサーバーから読み込まれたときに適切に表示されるように再レンダリングする必要があることを RN/Yoga に伝える何かが欠けているようです。多かれ少なかれ、これは次のようになります。
public class ReactServerListComponent extends SimpleViewManager<LinearLayoutExtension> {
private static final String REACT_CLASS = "TAReactServerListComponent";
@Override
public String getName() {
return REACT_CLASS;
}
...
@ReactProp(name = "link")
public void setLink(final LinearLayoutExtension view, String theNewLink){
//async loader logic invokes this on success
view.loadRetrievedEntries(newEntries);
}
...
}
この場合LinearLayoutExtension
、Adapter によって生成されたすべてのビューが含まれます。これには、非同期的にロードされるイメージ ビューが含まれます。
ShadowNode
メジャー関数で を返す、または の参照を保持してShadowNode
を呼び出すなど、いくつかのことを試しましdirty()
た。
これを行う正しい方法は何ですか?残念ながら、「リポジトリを確認する」以外の非常に複雑なコンポーネントを扱うドキュメントや例は見つかりませんでした...