Open18

個人開発メモ(フロントエンド編)

abeuzZabeuzZ

概要

個人開発(元記事URL 貼る)における調べ物のメモです。
自分の見解や苦労などはIMOとしてトグルに格納しています。

abeuzZabeuzZ

Tailwind

motivation

  • 業務で触っていたbootstrapに似ており、慣れやすそう。
  • やりたいデザインはTailwindで足りる。

knowledge

https://qiita.com/Yuki-TU/items/93e7b4f1c759a17f19d1

IMO

2023年状況だがとても良くまとまっており参考になりました。感謝。

CSSで独自スタイルの変数を定義するのは複数人開発だと意図せずオレオレスタイルが定義されてしまい、ほとんど似たようなスタイル定義が重複したり親要素との依存関係など複雑になるイメージなのでライブラリという共通言語の方があった方が良いと思っている。
とはいえデザインや手触りはこだわりたいのでUIライブラリは不採用。
ありがとうTailwind。

(2020年くらいのフロント知識なので上記問題を解決する手法があれば教えていただけると嬉しいです!)

abeuzZabeuzZ

スマホでlocalhost接続
https://qiita.com/osa-osa/items/593281b7eb3315bf444d

自分のMacのIPアドレスがわかれば良い。
同じwifiに接続してlocalhost代わりにすれば接続できる。
上記以外にもターミナルでifconfigでもIP調べることが可能。

abeuzZabeuzZ

ただこれするとNext側でクライアントコンポーネントとサーバーコンポーネントでhost名をIPとdockerサービス名で使い分けないとうまく接続できない。(自分の勘違いかもしれないが)
どこかで解決したい。

abeuzZabeuzZ

Infinity Scroll実装

基本的な考え方は以下の感じ。

  1. useStateでページネーションのindexを記録
  2. コンポーネントを監視してスクロールして画面に入ったら発火してページネーションindexを増やす
  3. バックエンドからページネーション形式で次のデータをfetch
  4. コンポーネント追加

あとは監視をどのようにして実装するか。
いずれの外部ライブラリも更新が2年前くらいで止まっている。
最新のNext14を利用していることもあり一旦IntersectionObserverを用いて自前で実装してみる。

abeuzZabeuzZ

useSWR

無限スクロールでuseStateなどを使ってクライアントコンポーネントからAPIを読んでコンポーネント追加という動作をする必要があったの調べ物で見つけた。

最初はサードパーティライブラリなので不採用にしようと思ったがライブラリ制作者はNext.jsと同じくvercelなので検討中。
結構記述減らせそう。

https://github.com/vercel/swr

abeuzZabeuzZ

useEffect

https://ja.react.dev/reference/react/useEffect

バグを見つけ出すために、開発中には React はセットアップとクリーンアップを、セットアップの前に 1 回余分に実行します。これは、エフェクトのロジックが正しく実装されていることを確認するストレステストです。これが目に見える問題を引き起こす場合、クリーンアップ関数に一部のロジックが欠けています。

開発中にuseEffect内のAPI等が2回実行されていると思ったらそういう仕様か