2017-09-06 7 views
0

私は、カスタマイズされた画像をレンダリングするための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>要素を含まれている必要があります。

答えて

0

onLoadハンドラーをcomponentDidMount()メソッドに移動することができます。 docs

+0

あなたが正確に何を意味するのか、私の特定の問題にどのように役立つのか分かりません。どうか明らかにしてください。 –

+0

画像の読み込みが完了したときに呼び出される 'onLoad'イベントハンドラがまだ必要なので、' '要素からイベントハンドラを"移動 "できません。 'componentDidMount'(' image.complete'がtrueの場合)でイベントハンドラを手動で呼び出すだけですか? –

+1

DOMは 'componentDidMount'フェーズからアクセスできます。つまり、画像の読み込みが完了している必要があります。だから、はい、私は手動でその内部のイベントハンドラを呼び出すことを意味します。 – koolkat

関連する問題