Open18

[随時更新]雑に調べたことをまとめておくスクラップ

SaeSae

MockedProvider

GraphQLのクエリのモックデータを提供する。
テスト環境で実際にサーバーとの通信を行わず、あらかじめ設定したモックを返すことができる。

  • mocks
    モックデータを定義したオブジェクトの配列。各クエリやミューテーションに対して予想されるレスポンスを定義する。
  • children
    MockedProviderでラップしたいコンポーネント。実際にテストされる対象。
SaeSae

variableMatcher

MockedProviderでモックレスポンスを設定する際に、動的な変数に基づいてテストを行いたい場合に使用する。

SaeSae

UU(Unique User)

Webサイトに訪問したユーザー数のこと。一人のユーザーが何度も訪問してもカウントは1。

SaeSae

Cookie / Session

https://zenn.dev/collabostyle/articles/8949e8db686263

  • なぜCookieやSessionが必要なのか
    HTTPはステートレスなプロトコルなので状態を保持できない

  • Cookie
    Cookieはサーバーからクライアントに保存して欲しい情報を送ってもらう。
    次回以降にブラウザからサーバーに自動で送信されるテキストデータ。
    Cookieは平文で保存されるため書き換え可能。盗聴、改ざんされる恐れが。

  • Session
    Cookieを応用した仕組み
    CookieにランダムなセッションIDを持たせてサーバーではセッションIDをもとにユーザーの特定を行う
    Cookieに保存するのはセッションIDのみ

SaeSae

Barrelファイル

複数のモジュールのエクスポートを一つのエントリーポイントとして扱う方法
projectディレクトリ配下にmoduleが3つ存在していた場合、下記のようなimportを行うことになる

import { value1 } from "./module1"
import { value2 } from "./module2"
import { value3 } from "./module3"

Barrelファイルを使用することで下記のようないimportになる

import { value1 , value2, value3 } from "./index.ts"

メリット

- importプロセスが整理、簡略化される

デメリット

  • 複雑になる
  • パフォーマンス低下
  • 競合の可能性

https://flaming.codes/ja/posts/barrel-files-in-javascript/
https://typescript-jp.gitbook.io/deep-dive/main-1/barrel

気になったのであとで調べたい

  • パフォーマンスの観点
  • RSCが混在しているPJでも使用できるのか
SaeSae

Container/Presentationalパターン

  • ロジックとUIを分けることで関心の分離を図るデザインパターン
  • 影響範囲を狭めることができ、保守性を高める

Container

ロジック、API、状態管理。
独自で要素はレンダリングしない。スタイルは持たない。

Presentational

propsで受け取った値をどう表示するか。原則状態は持たない。
UIに関するものは持つケースもある。

https://zenn.dev/buyselltech/articles/9460c75b7cd8d1
https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0
https://www.patterns.dev/react/presentational-container-pattern

SaeSae

waitForを使用するケース

  • API からデータを取得して表示するコンポーネント
  • useEffect でデータを非同期に更新するコンポーネント
  • 遅延描画(例: setTimeout など)をしているコンポーネント