メインコンテンツまでスキップ

状態管理

ドメイン状態は、求人マッチングプラットフォーム用の集中型で型安全なデータ層を提供します。ユーザー、組織、求人投稿、応募、リアルタイムメッセージングを含むすべての必須ビジネスエンティティを包含します。

この状態構造は、すべてのアプリケーションワークフローにわたって認証、求人カタログ管理、応募処理、検索とフィルタリング、ページネーション、エラーハンドリングの唯一の真実の情報源として機能します。


📋 目次


🔐 認証とユーザー管理

求職者と雇用主のユーザー認証、プロファイルデータ、セッション情報を管理します。

プロパティ説明使用例
loggedInUser現在認証されているユーザーユーザー情報表示、権限チェック
user表示/編集中の個別ユーザープロファイルページ、ユーザー詳細
users管理者管理用のユーザーリストユーザー管理、ディレクトリリスト
sessionState現在のセッション情報とトークンデータセッション検証、トークン管理
sessionTypeセッション保存方法(cookieまたはlocal_storage)セッション設定
hasVerificationEmailBeenSentメール認証ステータスメール認証のUIフィードバック
isCreateUserSuccessユーザー作成成功フラグ登録ワークフローフィードバック
invitationsチームメンバー招待(送信/受信)招待管理、通知
acceptInvitationDataチーム招待処理用データ招待受諾フロー
resetPasswordTokenパスワードリセットトークンパスワードリセットワークフロー

🏢 組織管理

雇用主組織データ、チームメンバーシップ、組織求人投稿を処理します。

プロパティ説明使用例
organization現在選択/表示中の雇用主組織組織プロファイルページ
organizations雇用主組織のリスト組織ディレクトリ、検索結果
organizationMembers現在の組織のチームメンバーチーム管理、メンバーリスト
organizationProducts組織に属する求人投稿組織求人カタログ
organizationProductsCount組織求人投稿の総数ページネーション、分析
paymentDashboardUrl組織請求用支払いダッシュボードURL支払い統合

💼 求人投稿とカタログ管理

求人投稿情報、カテゴリ、スキル属性、ファイル添付を管理します。

プロパティ説明使用例
product現在選択/表示中の求人投稿求人詳細ページ
products求人投稿のリスト求人リスト、検索結果
homeProductsホームページ用注目求人投稿ホームページ求人ショーケース
categories求人カテゴリ(例:エンジニアリング、デザイン)カテゴリナビゲーション、フィルタリング
homeCategoriesホームページ用注目求人カテゴリホームページカテゴリ表示
attributes求人スキル属性と要件求人フィルタリング、スキルタグ
attributesPage現在の属性ページ/セクション属性ナビゲーション
productAttachment求人投稿ファイル添付ファイルダウンロード、求人説明
productAttachmentUploadUrl求人添付アップロード用事前署名URLファイルアップロード機能
productUploadFileResponseファイルアップロードレスポンスデータアップロード後処理

📝 応募と注文管理

求人応募管理と処理ワークフローを処理します。

プロパティ説明使用例
order現在選択中の求人応募応募詳細ページ
ordersList求人応募のリスト応募履歴、管理

💬 リアルタイムコミュニケーション

雇用主と求職者間のリアルタイムメッセージングを管理します。

プロパティ説明使用例
topics雇用主と候補者間のチャットトピック/会話チャットインターフェース、会話リスト
topicId現在アクティブな会話トピックIDメッセージルーティング、アクティブチャット
messages現在の会話のメッセージチャットメッセージ表示
chatSearchTextメッセージ/トピック用チャット検索クエリメッセージ/トピック検索機能

🔍 検索とフィルタリング

求人リストと応募の高度な検索とフィルタリング機能を提供します。

プロパティ説明使用例
searchFilter複雑な求人検索設定高度な求人検索機能
searchFilter.keyword求人検索キーワード検索入力値
searchFilter.keywordQueryバックエンド用処理済みキーワードクエリバックエンド検索パラメータ
searchFilter.filterQuery結合フィルタクエリ文字列APIクエリ文字列
searchFilter.selectedFiltersアクティブフィルタ選択(スキル、場所など)フィルタUI、検索絞り込み

📄 ページネーション

アプリケーション全体のすべてのリストベースデータのページネーションを管理します。

プロパティ説明使用例
paginationすべてのリスト用ページネーション情報オブジェクトさらに読み込み機能、ページナビゲーション
pagination.products求人投稿リストページネーション求人リストページネーション
pagination.orders応募リストページネーション応募履歴ページネーション
pagination.organizations組織リストページネーション組織ディレクトリページネーション
pagination.usersユーザーリストページネーションユーザー管理ページネーション
pagination.topics会話トピックページネーションチャットトピックページネーション
pagination.messagesメッセージ履歴ページネーションチャットメッセージ履歴
pagination.invitationsチーム招待ページネーション招待管理
pagination.organizationMembers組織メンバーページネーションチームメンバーリスト
pagination.organizationProducts組織求人投稿ページネーション組織求人カタログ

🧭 ナビゲーションとUI制御

アプリケーションナビゲーション、ルーティング、ユーザーインターフェース状態を制御します。

プロパティ説明使用例
currentPage現在のページ/ルート識別子ページ固有ロジック
isMenuOpenモバイル/サイドバーメニュー状態メニュー切り替え機能
intendedUrlログイン後のリダイレクト先URLログイン後ナビゲーション
signUpWizardPageサインアップウィザードの現在ステップマルチステップ登録
defaultWizardPageデフォルトウィザード開始ページウィザード初期化
loggedInRedirectUrl認証済みユーザーのデフォルトリダイレクトログイン後ルーティング
logoutRedirectUrlログアウト後のリダイレクトURLログアウト後ルーティング
needsPaymentSetupRedirect支払い設定リダイレクトURL支払いフロールーティング
notLoggedInRedirect未認証ユーザーのリダイレクト認証強制
organizationRegistrationNotCompleteRoute不完全な組織設定リダイレクト組織オンボーディング
successDeactivateAccountUrlアカウント非アクティブ化成功ページアカウント管理フロー
verifyChangeEmailUrlメール変更認証リダイレクトメール更新フロー
verifiedEmailUrlメール認証後リダイレクトメール認証フロー

⚙️ 設定

アプリケーション全体の設定とプリファレンス。

プロパティ説明使用例
attributesNameスキル属性のカスタム名(デフォルト:"skills")UI全体の動的ラベリング
pageSizeすべてのデータリストのデフォルトページサイズページネーション設定

🚨 エラーハンドリング

グローバルエラーハンドリングと表示管理。

プロパティ説明使用例
errorsアプリケーションエラー配列エラー表示、ログ
hasErrorグローバルエラーフラグエラー状態表示

🔧 技術的状態

ローディングインジケーターと技術的操作のシステムレベル状態。

プロパティ説明使用例
isLoadingグローバルローディング状態アプリケーション全体のローディングインジケーター

💡 使用例

基本コンポーネント使用法

function JobListings({ state, middleware, updateState }) {
// 現在のユーザーデータにアクセス
const currentUser = state.loggedInUser;

// ローディング状態をチェック
if (state.isLoading) {
return <LoadingSpinner />;
}

// 求人投稿を表示
const jobPostings = state.products || [];

return (
<div>
<h2>利用可能なポジション</h2>
{jobPostings.map(job => (
<JobCard key={job.id} job={job} currentUser={currentUser} />
))}
</div>
);
}

状態の更新

// 直接状態更新
updateState('isLoading', true);

// 求人リストを更新
updateState('products', newJobPostings);
updateState('isLoading', false);

// 求人検索フィルターを更新
updateState('searchFilter', {
...state.searchFilter,
keyword: 'ソフトウェアエンジニア',
selectedFilters: [...state.searchFilter.selectedFilters, { type: 'location', value: 'リモート' }]
});

状態に基づく条件付きレンダリング

function JobPlatformApp({ state }) {
// 未認証ユーザーにログインを表示
if (!state.loggedInUser) {
return <LoginForm />;
}

// エラー状態を表示
if (state.hasError) {
return <ErrorDisplay errors={state.errors} />;
}

// 現在のページに基づくルーティング
switch (state.currentPage) {
case 'home':
return <HomePage />;
case 'positions_list':
return <JobListings />;
case 'position_show':
return <JobDetails />;
case 'my_page':
return <UserDashboard />;
case 'orders':
return <ApplicationsList />;
case 'organization_show':
return <OrganizationProfile />;
case 'topics_list':
return <ChatTopics />;
case 'launch_screen':
return <LoadingScreen />;
default:
return <NotFoundPage />;
}
}