Giter Club home page Giter Club logo

engineer-sns-client's People

Contributors

gsuke avatar

Watchers

 avatar

engineer-sns-client's Issues

stylelintを削除

Tailwind CSSメインでスタイリングをしているので不要

1ページ目の読み込みが複数回行われている

ページ読み込み時、1ページ目の読み込みが何回も行われてしまっている。

エンドポイント: /text/all?$orderby=_created_at desc&$limit=15&$skip=0

原因箇所は以下

  // 新規投稿が溜まった場合は1ページに戻し、再読み込みをかける
  useEffect(() => {
    void (async () => {
      if (newTexts.isTooManyTexts) {
        await oldTexts.setSize(1);
        await oldTexts.mutate();
      }
    })();
  }, [newTexts.isTooManyTexts, oldTexts]);

「ローディング中」を表示する

投稿一覧をロードしている状態がわかるようにする。
バックエンドの読み込み時間が長いことがあるため、それも説明できると尚良い。

入力値バリデーションを実装する

  • React Hook Form を使ったほうが良い。(公式ページが丁寧なので、キャッチアップ簡単)
  • バリデーション実装前にバックエンドの境界値・不正値を確認しておく

Atomic Designで設計しなおす

https://github.com/AKIRA-MIYAKE/applicational-atomic-design-for-nextjs を参考に設計する。
本来はpagesのみでステートを持ち、propsバケツリレーで下位コンポーネントに流したほうが良いのだろうが、SWRの設計**と合わない。
そのため、Organisms以上でグローバル値にアクセスできるようにする。

  • Atoms: HTMLタグに対応するもの, 論理的に一つの要素といえるもの
  • Molecules: Atomsを組み合わせたもの, 論理的に複数の要素で構成されたもの
  • Organisms: フックやコンテキストなどグローバル値にアクセスする要素(Moleculesのラッパーもここ)
  • Templates: IndexとUserPageの共通部分をまとめる
  • Pages: Next.jsのpagesディレクトリに対応

独自ドメイン

独自ドメインを適用したあと、以下の場所の記述を書き換える

  • README
  • リポジトリのAbout欄
  • その他、デプロイURLを参照している外部ページなど

レンダリング最適化

レンダリングコストを削減したい。
しかし、現状で処理の重たい箇所は見当たらないので、優先度の高いタスクではない。

  • React.memo
  • useCallback
  • (useMemo)

参考になりそうな文献

defaultPropsを使わないようにする

現在のESLintのルールでは、propsのデフォルト値を設定するときにdefaultPropsを使うようになっている。
しかし、関数コンポーネント + TypeScriptで書いている場合は、これを使うのは不適切に思える。

参考文献

srcディレクトリに移動する

ルートディレクトリが混雑してきたので、移動できるソースファイルはsrcディレクトリに移動する。

移動対象

  • components
  • hooks
  • lib
  • pages
  • styles

移動できないもの

  • 設定ファイル
  • public

移動にあたって、設定ファイルを見直す必要があるか確認する。(Tailwind CSSなど)

参考文献

Tailwind CSS + daisyUI から Chakra UI へ移行する

結論

Chakra UIには移行しないことにした。

メリット

  • 型保護されている
  • a11yの観点では、daisyUIよりキレイ
  • 便利Hooksなどをはじめ、機能が豊富

デメリット

  • daisyUI には semantic color names が用意されていて、これがコンポーネントの着色やダークモードを実装においてかなり便利なので、これを手放したくない
  • 独自コンポーネントを使うので、a11y関係のESLintルールが効きづらいかも

タスク

  • Chakra UI をインストール
  • daisyUIのダークモードを無効化
  • ESLintルールを導入
  • 部品をChakra UIで置き換える
  • daisyUIをアンインストール
  • Lintルールを修正
  • READMEを編集する

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.