どのようにスムーズに反応アプリで画像をレンダリングするには?
あなたのウェブアプリUXを改善してください
追跡に切りましょう.下のGIFは、このポストの終わりまでに何を達成するかを示しています.
デフォルト画像のレンダリング対滑らかな画像のレンダリングを使用してrender-smooth-image-react
完成コンポーネントはこちら -
< div >
<高橋潤子> <井上>
私はこれを公開しました
< hr/>
< H >
リトルバックストーリー
<高橋潤子>
私は最近、メディアヘビーアプリに取り組んだ.私がイメージの束が不十分になるのに気が付くまで、すべては涼しかったです.それはこんな感じだった.p >
<数字> < p >
<フィグキャプション> :貧弱な画像のレンダリング< file >
しばらくの間私は考えた🖨 <プリンタシミュレータアプリ< em/em >p >
全体的な顧客満足は、そのような貧しいローディングUX(たとえアプリの残りが素晴らしいとしても)にヒットします.これは特にメディアヘビーアプリにとって真実ですp >
おお、これを修正するために何ができるか見ましょう.p >
< hr/>
< H >
ロードアンドファイア🔫
<高橋潤子>
画像をレンダリングするのに最適な瞬間は完全にダウンロードした後です.そのときまでローダ/プレースホルダを表示し、イメージを隠します.p >
私たちは、この反応をonLoad 画像タグのイベント.あなたはもっと読むことができますReact.js イベントhere .
<> P >
クラスをハイライト表示する
< H >
コードイット
<高橋潤子>
我々は機能的なコンポーネントを作成し、カップルの状態を維持するフックを使用します.あなたがフックを反応させるために新しいならば、あなたはより多くを学ぶことができますhere .
<> P >
クラスをハイライト表示する
クラスをハイライト表示する
ここで我々は国家を維持する
それから我々は使う
< p >ページのプリンタシミュレータはもうないp >
< hr/>
< H >
イメージのダウンロードが失敗した場合/無効なsrc ?
<高橋潤子>
<数字> < p >
< tag >イメージタグを用いた代替テキストのイメージ
を使って
<> P >
クラスをハイライト表示する
クラスをハイライト表示する
あなたは行きます、
<数字> < p >
< file caption >画像のカスタマイズ可能な代替テキスト
あなたが望む任意の方法でスタイルを代替することができます.p >
私はあなたのためにものを容易にして、軽量のNPMパッケージを発表しましたrender-smooth-image-react .
このポストを読んでくれてありがとう、これは独学で情熱的なウェブ開発者です.サインバイオフ.次の時間までp >
onLoad
イベントと簡単なアンナSCSS.This article is cross-posted on Codebrahma and Medium
追跡に切りましょう.下のGIFは、このポストの終わりまでに何を達成するかを示しています.
デフォルト画像のレンダリング対滑らかな画像のレンダリングを使用してrender-smooth-image-react
完成コンポーネントはこちら -
RenderSmoothImage
.< div >
<高橋潤子> <井上>
私はこれを公開しました
npm
パッケージrender-smooth-image-react . ソースコードはGitHub .< hr/>
< H >
リトルバックストーリー
<高橋潤子>
私は最近、メディアヘビーアプリに取り組んだ.私がイメージの束が不十分になるのに気が付くまで、すべては涼しかったです.それはこんな感じだった.p >
<数字> < p >
<フィグキャプション> :貧弱な画像のレンダリング< file >
しばらくの間私は考えた🖨 <プリンタシミュレータアプリ< em/em >p >
全体的な顧客満足は、そのような貧しいローディングUX(たとえアプリの残りが素晴らしいとしても)にヒットします.これは特にメディアヘビーアプリにとって真実ですp >
おお、これを修正するために何ができるか見ましょう.p >
< hr/>
< H >
ロードアンドファイア🔫
<高橋潤子>
Let the browser download the image and render it.
画像をレンダリングするのに最適な瞬間は完全にダウンロードした後です.そのときまでローダ/プレースホルダを表示し、イメージを隠します.p >
私たちは、この反応をonLoad 画像タグのイベント.あなたはもっと読むことができますReact.js イベントhere .
<> P >
クラスをハイライト表示する
<img onLoad={'callbackAfterImageIsDownloaded'} />
< div >< H >
コードイット
<高橋潤子>
我々は機能的なコンポーネントを作成し、カップルの状態を維持するフックを使用します.あなたがフックを反応させるために新しいならば、あなたはより多くを学ぶことができますhere .
<> P >
クラスをハイライト表示する
// RenderSmoothImage.jsx
function RenderSmoothImage({src, alt}) {
const [imageLoaded, setImageLoaded]=React.useState(false);
return (
<div className="smooth-image-wrapper">
<img
src={src}
alt={alt}
className={`smooth-image image-${
imageLoaded ? 'visible' : 'hidden'
}`}
onLoad={()=> setImageLoaded(true)}}
/>
{!imageLoaded && (
<div className="smooth-preloader">
<span className="loader" />
</div>
)}
</div>
)
}
< div >クラスをハイライト表示する
/** styles.css */
.smooth-image {
transition: opacity 1s;
}
.image-visible {opacity: 1}
.image-hidden {opacity: 0}
< div >ここで我々は国家を維持する
imageLoaded
デフォルトはfalse
. 次に、true
, 一度画像がダウンロードされます.我々はonLoad
イベントをトリガするイベントp >それから我々は使う
imageLoaded
状態を条件付きでクラスに追加するimg
タグimage-visible
対image-hidden
. 我々は、スムーズにするために遷移/アニメーションを追加することができます.完全なスタイルのトップでリンクされたGISTを参照してください.p >< p >ページのプリンタシミュレータはもうないp >
< hr/>
< H >
イメージのダウンロードが失敗した場合/無効なsrc ?
<高橋潤子>
<数字> < p >
< tag >イメージタグを用いた代替テキストのイメージ
を使って
alt
属性は画像の代替テキストを表示できます.しかし、デフォルトのアイコンとスタイリングはあまりにも偉大ではありません.これを修正するには、カスタムを表示できますalt
テキストbr/><> P >
クラスをハイライト表示する
// RenderSmoothImage.jsx
function RenderSmoothImage({src, alt}) {
.....
const [isValidSrc, setIsValidSrc] = React.useState(!!src);
return (
<div className="smooth-image-wrapper">
{isValidSrc ? (
<img
....
onError={() => setIsValidSrc(false)}
/>
) : (
<div className="smooth-no-image">{alt}</div>
)}
{isValidSrc && !imageLoaded && (
<div className="smooth-preloader">
<span className="loader" />
</div>
)}
</div>
)
}
< div >クラスをハイライト表示する
/** styles.css */
......
.smooth-no-image {
background-image: linear-gradient(90deg,#ccc,#999,#ccc);
color: #fff;
}
< div >あなたは行きます、
<数字> < p >
< file caption >画像のカスタマイズ可能な代替テキスト
あなたが望む任意の方法でスタイルを代替することができます.p >
私はあなたのためにものを容易にして、軽量のNPMパッケージを発表しましたrender-smooth-image-react .
このポストを読んでくれてありがとう、これは独学で情熱的なウェブ開発者です.サインバイオフ.次の時間までp >
Reference
この問題について(どのようにスムーズに反応アプリで画像をレンダリングするには?), 我々は、より多くの情報をここで見つけました https://dev.to/krrish96/how-to-smoothly-render-images-in-react-app-201jテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol