React-window: ハウツー:画像のちらつきを防ぐ

作成日 2019年09月10日  ·  3コメント  ·  ソース: bvaughn/react-window

こんにちは良い人たち、
私の質問はreact-windowに完全に関連しているわけではありませんが、理解できない動作がいくつかあります。ここでガイダンスを求めています。

質問:srcにメモ化を使用し、VariableSizeListにitemData propを使用している場合でも、画像がビューポートから出るたびに再レンダリングされるのはなぜですか?

デモ:
https://codesandbox.io/embed/reverent-margulis-zndls

前もって感謝します!

💬 question

最も参考になるコメント

あなたの例では、あなたが使用しているウェブサイトが意図的に_random_画像を返すので、それが本当に可能であるとは思いません:)

ただし、一般的に、react-windowのようなライブラリを使用する場合、ビューポートからスクロールアウトすると、アイテムはマウント解除されます(したがって、ローカル状態が失われます)。 その状態を維持する必要がある場合は、それを親コンポーネントに移動する必要があります。

これは、親コンポーネントまで「状態を持ち上げる」プロセスを説明するReactドキュメントです。
https://reactjs.org/docs/lifting-state-up.html#lifting -state-up

全てのコメント3件

行がスクロールして表示されなくなると、マウントが解除されます(したがって、ローカルのメモ化は失われます)。 特定のデモでは、ランダムな画像を読み込んでいるように見えます。したがって、後ろにスクロールして行が再マウントされると、新しいURLが読み込まれます。 これを回避するには、その状態をリストの上に保存し、小道具を介して渡す必要があります。

役立つと思われるウィンドウ処理の仕組みの概要は次のとおりです。
https://addyosmani.com/blog/react-window/

答えてくれてありがとう、 @ bvaughn

どのような値を状態で保存する必要がありますか、それについて詳しく説明していただけますか?
URL文字列をデータ配列に移動し、行のメモ化を追加しましたが、効果がありませんでした(デモを更新しました)。 それがどのように行われるべきかについてのいくつかのヒントを教えてください。

過去のDOM構造で既にレンダリングされたものを再利用することに関する他の問題#234を読みましたが、それが前進する唯一の方法であると疑っています。 それは本当ですか?

あなたの例では、あなたが使用しているウェブサイトが意図的に_random_画像を返すので、それが本当に可能であるとは思いません:)

ただし、一般的に、react-windowのようなライブラリを使用する場合、ビューポートからスクロールアウトすると、アイテムはマウント解除されます(したがって、ローカル状態が失われます)。 その状態を維持する必要がある場合は、それを親コンポーネントに移動する必要があります。

これは、親コンポーネントまで「状態を持ち上げる」プロセスを説明するReactドキュメントです。
https://reactjs.org/docs/lifting-state-up.html#lifting -state-up

このページは役に立ちましたか?
0 / 5 - 0 評価