[命名規則]

2024/08/15に公開

tryXxxxxx

"tryXxxxxxx" は if文を内包する際に便利なプレフィックスだが、
そもそもif文に依存しており、if文を除外して実行したい際にこのメソッドは使えなくなる。

つまり非推奨。

  async tryGetTokenAndPush(mine: any) {
    if (await this.isSupported()) {
      console.log('ONCE処理[mine, fcm.isGranted()]:', mine, this.isGranted());
      this.getToken().then((token) => {
        new FCMtokens([], { user: mine }).push({ token });
      });
    }
  }

CSSをファイルとして分けたほうが良い理由

  • デバッガーツールで、クラス単位でスタイルを変更・検証できるから。
  • クラス名を付与することになるのでHTML上でどのコンポーネントか判断しやすい。

デメリット

  • MUIなどの高機能が使えない sx={{ bgcolor, m: 2 }}

  • 以下SWRでだいたい解決

DB変更時の状態反映: 差分追加方式 vs 再読み込み方式

差分追加方式

  • 並び順が初期ロード(読み込み)時と同じでないため、再計算してあげる必要がある
    • 並び替えがqueryで依頼できるなら尚更、無駄な処理である
  • 負荷が軽い: チャットやユーザー一覧などに向いている

再読み込み方式

  • 並び順が初期ロード(読み込み)時と同じ
  • 負荷がかかる: チャットやユーザー一覧などは量が莫大なので避けたい

Viewとロジックはどうあるべきか?

ロジックの書き方

  • コンポーネントごとにAPI通信を行う
  • コンポーネントに即したロジックはそのコンポーネント内に書く
  • 複数コンポーネント間でロジックを共有したい場合は /src/lib/ 配下へ

ファイルの分け方

  • Drawerなどのhiddenを持つコンポーネントは、大元に定義し、内部を別ファイルにおく
  • ファイルの置き場所: 同階層に配置。(Buttonなど)他の箇所でも使用したい場合、汎用性をもたせて/compoents/配下へ。

よくある複雑な要件

  • ユーザープロフィールページ:
    • ユーザーの詳細
    • ユーザーが持つメディアらの表示, CRUD
      • メディアにあるコメントらの表示, CRUD
    • 編集ボタンをおしたら
      • モーダルがでてユーザー詳細の編集
  • ユーザー一覧ページ
    • ユーザーがもつ「フォロワー数」「いいね数」などの表示

それぞれのコンポーネントをshowしたら、データを高速でフェッチして表示させたい

"...x" 構文で配列として引数全てを受け取れる


class Users extends Array {
  constructor(...x) {
    console.warn(x); // [1,2,3]
    super(...x);
const [members, setMembers] = useState([]);

Object.assign(members.prototype, sayHiMixin); // 生成後のArrayにmixinはできるのか?
list.addChild(members);

x:

View(state) <-> Model <-> DataBase 本来どうあるべきか?

本来は

  • ViewはModelを、ModelはDBを監視して、常に最新の状態にしておくべき

しかし、描画していない部分(まだ表示していないチャットなど)は、負荷軽減のためにそのルールからはずれたい

  • よって、Viewが表示されたら(モーダルを開くなどもそう)、キックする方式に。

Discussion