私は、カスタマイズされた画像をレンダリングするためのReactコンポーネントを持っています。簡略化した形で、それは次のようになります。反応レンダリングされた画像がロードされたときの検出
function MyImage(props) {
return <img src={props.src} onLoad={props.onLoad} />
}
Webページでは、サーバーレンダリングReactDOMServer
であると<img>
要素は、(意図的に)すでに初期のHTMLドキュメントに存在しています。ただし、そのonLoad
イベントハンドラはではなく、です。私はそれがの機能のReactDOMServer
と信じています。
何時々起こることができるにはJavaScriptがロードされている前またはそれが実行を開始するか、少なくとも前onLoad
イベントハンドラアップセットに反応する前にカスタマイズされた画像の一部、特に小さいものは、ロードを終えることができるということです。その結果、これらのイメージ上のonLoad
イベントは、イベントハンドラを呼び出さないようにします。
基礎となるイメージのロードが完了した後、反応させ、レンダリング<img>
要素内に設置されているonLoad
イベントハンドラは、常にが呼び出されることを確実にする方法はありますか?
私の最も重要な制約は、私が使用したいということです反応して、サーバーレンダリングされたHTMLページが正しく設定さそのsrc
属性を持つ<img>
要素を含まれている必要があります。
あなたが正確に何を意味するのか、私の特定の問題にどのように役立つのか分かりません。どうか明らかにしてください。 –
画像の読み込みが完了したときに呼び出される 'onLoad'イベントハンドラがまだ必要なので、' '要素からイベントハンドラを"移動 "できません。 'componentDidMount'(' image.complete'がtrueの場合)でイベントハンドラを手動で呼び出すだけですか? –
DOMは 'componentDidMount'フェーズからアクセスできます。つまり、画像の読み込みが完了している必要があります。だから、はい、私は手動でその内部のイベントハンドラを呼び出すことを意味します。 – koolkat