AngularでSession StorageにJSONデータを保存する方法
Wenhao Wang
Dev Intern · Leapcell

Key Takeaways
- JSONデータは、セッションストレージに保存する前に文字列化する必要があります。
- 専用のAngularサービスは、コードの再利用性と組織性を向上させます。
- セキュリティリスクのため、機密データの保存は避けてください。
セッションストレージは、セッション中にユーザーのブラウザにデータを一時的に保存するための強力なツールです。Angularアプリケーションでは、セッションストレージを効果的に管理することで、ページのリロード時に状態を維持し、ユーザーエクスペリエンスを向上させることができます。このガイドでは、Angularのコンテキスト内でJSONデータをセッションストレージに保存および取得する方法について説明します。([Stack Overflow][1])
セッションストレージの理解
セッションストレージはWeb Storage APIの一部であり、キーと値のペアをWebブラウザに保存できます。データを無期限に保持するローカルストレージとは異なり、セッションストレージはページセッションの期間中のみデータを保持します。ブラウザのタブが閉じられると、データはクリアされます。([Stack Abuse][2], [JavaScript in Plain English][3])
JSONデータをセッションストレージに保存する
セッションストレージは文字列のみを保存できるため、JSONデータを保存する前にシリアル化する必要があります。Angularコンポーネントでこれを行う方法は次のとおりです。([Medium][4])
import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-example', template: `<p>Session Storage Example</p>` }) export class ExampleComponent implements OnInit { ngOnInit() { const user = { name: 'John Doe', email: 'john.doe@example.com' }; // JSONオブジェクトをシリアル化して保存する sessionStorage.setItem('user', JSON.stringify(user)); } }
この例では、user
オブジェクトは、セッションストレージに保存される前に、JSON.stringify()
を使用してJSON文字列に変換されます。([Stack Abuse][2])
セッションストレージからJSONデータを取得する
セッションストレージからJSONデータを取得してデシリアライズするには:
const userData = sessionStorage.getItem('user'); if (userData) { const user = JSON.parse(userData); console.log(user.name); // 出力:John Doe }
このコードは、セッションストレージから文字列化されたJSONを取得し、JSON.parse()
を使用してJavaScriptオブジェクトに解析し直します。([Stack Abuse][2])
Angularでセッションストレージサービスを作成する
コードの整理と再利用性を向上させるために、セッションストレージの操作を処理するための専用のサービスを作成することを検討してください。([Stack Overflow][5])
import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root' }) export class SessionStorageService { setItem(key: string, value: any): void { try { const serializedValue = JSON.stringify(value); sessionStorage.setItem(key, serializedValue); } catch (error) { console.error('セッションストレージへの保存エラー', error); } } getItem<T>(key: string): T | null { try { const item = sessionStorage.getItem(key); return item ? JSON.parse(item) as T : null; } catch (error) { console.error('セッションストレージからの読み取りエラー', error); return null; } } removeItem(key: string): void { sessionStorage.removeItem(key); } clear(): void { sessionStorage.clear(); } }
このサービスは、セッションストレージ内の項目の設定、取得、削除、およびクリアを行うメソッドを提供し、シリアル化とデシリアライズを内部で処理します。
セッションストレージサービスの使用
SessionStorageService
をコンポーネントに注入して、セッションストレージを管理します。
import { Component, OnInit } from '@angular/core'; import { SessionStorageService } from './session-storage.service'; @Component({ selector: 'app-user', template: `<p>User Component</p>` }) export class UserComponent implements OnInit { constructor(private sessionStorageService: SessionStorageService) {} ngOnInit() { const user = { name: 'Jane Smith', email: 'jane.smith@example.com' }; this.sessionStorageService.setItem('user', user); const storedUser = this.sessionStorageService.getItem<{ name: string; email: string }>('user'); if (storedUser) { console.log(storedUser.name); // 出力:Jane Smith } } }
このアプローチは、よりクリーンなコードを促進し、関心を分離し、アプリケーションをより保守しやすくします。
ベストプラクティス
- エラー処理: JSONを解析する際は、潜在的なエラーを適切に処理するために、常にtry-catchブロックを含めてください。
- データ検証: 予期しない動作を防ぐために、セッションストレージから取得したデータを使用する前に検証してください。
- セキュリティに関する考慮事項: ブラウザの開発者ツールからアクセスできるため、セッションストレージに機密情報を保存しないでください。
- サービス抽象化: コードの再利用性と保守性を高めるために、セッションストレージのロジックをサービス内にカプセル化します。
FAQs
JSON.stringify()
を使用してオブジェクトを文字列に変換し、sessionStorage.setItem()
を使用します。
コンポーネント全体でクリーンで再利用可能で保守可能なコードを促進します。
いいえ、ブラウザツールからアクセスできるため、機密情報を保存しないでください。
Leapcellは、バックエンドプロジェクトをホストするための最適な選択肢です。
Leapcellは、Webホスティング、非同期タスク、およびRedis向けの次世代サーバーレスプラットフォームです。
多言語サポート
- Node.js、Python、Go、または Rust で開発します。
無制限のプロジェクトを無料でデプロイ
- 使用量に対してのみ支払い — リクエストも料金もかかりません。
圧倒的な費用対効果
- アイドル料金なしの従量課金制。
- 例:25ドルで平均応答時間60msで694万リクエストをサポートします。
合理化された開発者エクスペリエンス
- 簡単なセットアップのための直感的なUI。
- 完全に自動化されたCI/CDパイプラインとGitOps統合。
- 実用的な洞察を得るためのリアルタイムメトリクスとログ。
簡単なスケーラビリティと高性能
- 高並行を容易に処理するための自動スケーリング。
- 運用上のオーバーヘッドはゼロ — 構築に集中するだけです。
ドキュメントで詳細をご覧ください。
X でフォローしてください: @LeapcellHQ