雑記ブログ:画像をLazyloadさせる
Closedfirst published: 2018/12/19last updated: 2019/01/15
画像大きくないし必須じゃないけど、Reactで実装したことがないのもあり、練習がてらGatsbyにLazyloadを入れてみることにした。
Gatsby公式
gatsby-image
を使うのが一般的らしいけど、Gyazoから引っ張ってる画像に適応されなかった。調べたら、Uploadcareなどリモート画像に対しては処理できないっぽい話が。
headlessCMS使ってるし、ローカルに画像を置いてGitでプッシュするのは面倒なので他の手段探すことにした。
lazysizes
良さそうなプラグインが見つからず、普通の静的サイト制作に使っているライブラリを使えないか確認。
Reactで使う場合はコンポーネント化しないで、専用のプラグインを併用して実装してほしいとのこと。了解。
ビルドエラーを回避
ローカルでは実装できたけど、Netlifyでビルドしたらコケた。
window
オブジェクトに対する処理が書かれているから、ビルド時に回避させる設定をしないとエラーになると。Vueでもよくあるやつ。
しかし、そこに書かれていたのはwebpackの古い書き方だったので、まだコケる。現在の書き方に直してビルド。
Lazyload 完成!
前に作った ZoomImage
のコンポーネントの src
を data-src
に変え、CSSでフェードを作ったら完成!