ページを更新しない限り、JavascriptlocalStorageを別のコンポーネントで使用できません

セルジオ

編集:これは、localstorageから値を取得する方法の複製ではありません私の場合はまったく異なりました。実際、それはローカルストレージの問題ではなく、Angularの動作方法の問題でした。

私はAngular7アプリケーションに取り組んでいます。

トークンをlocalStorageに設定し、window.localStorage.setItem("oauth_token", oauth_token)ホームページにリダイレクトするコンポーネントがあります。this.router.navigate(['/'])

ルートコンポーネントはlocalStorageから読み取ることができるはずですwindow.localStorage.getItem("oauth_token")が、手動でページを更新しない限り、値はnullです。

Chrome開発ツールを調べると、ローカルストレージにトークンが表示されているのに、なぜページを更新する必要があるのですか?これを克服するために私は何ができますか?

チェタンナイク

ローカルストレージとは何の関係もありません。ルートコンポーネントには、ローカルストレージまたはデータの変更にアクセスするためのトリガーまたは更新が必要です。

ホームページにリダイレクトすると、ホームページコンポーネントからのコードのみが実行され、親またはルートコンポーネントからは実行されません。

サービスファイルで変数を宣言する必要があります。したがって、ローカルストレージを更新するたびに、サービスファイル変数の値を更新する必要があります。ルートコンポーネントでこの変数にアクセスできます。したがって、サービス変数に変更があると、トリガーが起動され、ローカルストレージを更新できます。サンプルコードのリンクを確認してくださいhttps://github.com/resistcheat/angular-variable-as-observable

サービスファイルを作成する

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { BehaviorSubject, Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class CommonService {
  data: any;
  private items: BehaviorSubject<any> = new BehaviorSubject<any>(this.data);
  items$: Observable<any> = this.items.asObservable();
  constructor(private http: HttpClient) { }
  setLocalStorageData() {// Call this function to set localstorage
    localStorage.setItem("oauth_token", oauth_token)
    this.data = oauth_token;
  }
}

//this.dataが変更されるとトリガーが起動されます。以下のコードをルートコンポーネントに追加します

constructor(private commonService: CommonService) { }
items: any;
subscription: Subscription; //import { Subscription } from 'rxjs';

ngOnInit() {
  this.subscription = this.commonService.items$.subscribe(items =>  {
    this.items = JSON.stringify(items));
    console.log(localStorage.getItem("oauth_token"));
  }
}

ngOnDestroy() {
  this.subscription && this.subscription.unsubscribe();
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SmartEdit:ネストされたCMSコンポーネントの変更は、ページを更新しない限り反映されません

分類Dev

ページが更新されない限り、ReactRouterはRouteコンポーネントをレンダリングしません

分類Dev

別のコンポーネントの警告を表示している間はコンポーネントを更新できません

分類Dev

Angular2:子コンポーネントのページを更新した後、サービスからデータを取得できません

分類Dev

Reactでコンポーネントを更新できません

分類Dev

別のコンポーネントの状態を呼び出したり更新したりできませんReactNative

分類Dev

コードページが正しくないため、文字をインポートできません

分類Dev

コンポーネントのコンポーネント( `App`)エラーを更新できません

分類Dev

私はAngularプロジェクトに取り組んでいます。router.navigateを使用して、あるコンポーネントから別のコンポーネントに配列を渡す必要がありますが、それができません

分類Dev

Livewire:新しいレコードを追加した後、子コンポーネントを更新できません

分類Dev

マウントされていないコンポーネントの問題に対してuseEffectで反応状態の更新を実行できません

分類Dev

404ページでセキュリティコンポーネントを使用できませんか?

分類Dev

Reactjsおよびfirestoreでマウントされていないコンポーネントに対してReact状態の更新を実行できません

分類Dev

別のコンポーネントのレンダリング中にコンポーネント( `App`)を更新できません

分類Dev

コンポーネントを別のコンポーネントに置き換えました。ビルドは「プロジェクト<古いコンポーネント名>を解決できませんでした」というエラーで失敗しました。

分類Dev

ReactNative別のコンポーネントの関数本体の内部からコンポーネントを更新することはできません

分類Dev

ReactNative-警告:別のコンポーネントの関数本体の内部からコンポーネントを更新することはできません

分類Dev

TalendジョブでtMapを別のtMapコンポーネントにマップできません

分類Dev

Apexchartsコンポーネントの値を更新できません

分類Dev

Vueコンポーネントから別のページにプッシュできません

分類Dev

React-ブートストラップモーダルが閉じていません。エラー:別のコンポーネントのレンダリング中にコンポーネント( `OnboardPage`)を更新できません

分類Dev

一部のAndroidSDKコンポーネントをダウンロードして更新できません

分類Dev

ページを更新しない限り、jQueryアコーディオンが読み込まれません

分類Dev

マウントされていないコンポーネントのuseEffectエラーでReact状態の更新を実行できません

分類Dev

Angular2-ルーティングされたページの更新時...ナビゲートを使用するルートでのみ更新された場合、コンポーネントを見つけることができません

分類Dev

vuejsで2つのコンポーネントを使用できません

分類Dev

マウントされていないコンポーネントエラーで反応状態の更新を実行できません

分類Dev

ReactマウントされていないコンポーネントエラーでReact状態の更新を実行できません

分類Dev

React-router:更新しない限りコンポーネントはレンダリングされません

Related 関連記事

  1. 1

    SmartEdit:ネストされたCMSコンポーネントの変更は、ページを更新しない限り反映されません

  2. 2

    ページが更新されない限り、ReactRouterはRouteコンポーネントをレンダリングしません

  3. 3

    別のコンポーネントの警告を表示している間はコンポーネントを更新できません

  4. 4

    Angular2:子コンポーネントのページを更新した後、サービスからデータを取得できません

  5. 5

    Reactでコンポーネントを更新できません

  6. 6

    別のコンポーネントの状態を呼び出したり更新したりできませんReactNative

  7. 7

    コードページが正しくないため、文字をインポートできません

  8. 8

    コンポーネントのコンポーネント( `App`)エラーを更新できません

  9. 9

    私はAngularプロジェクトに取り組んでいます。router.navigateを使用して、あるコンポーネントから別のコンポーネントに配列を渡す必要がありますが、それができません

  10. 10

    Livewire:新しいレコードを追加した後、子コンポーネントを更新できません

  11. 11

    マウントされていないコンポーネントの問題に対してuseEffectで反応状態の更新を実行できません

  12. 12

    404ページでセキュリティコンポーネントを使用できませんか?

  13. 13

    Reactjsおよびfirestoreでマウントされていないコンポーネントに対してReact状態の更新を実行できません

  14. 14

    別のコンポーネントのレンダリング中にコンポーネント( `App`)を更新できません

  15. 15

    コンポーネントを別のコンポーネントに置き換えました。ビルドは「プロジェクト<古いコンポーネント名>を解決できませんでした」というエラーで失敗しました。

  16. 16

    ReactNative別のコンポーネントの関数本体の内部からコンポーネントを更新することはできません

  17. 17

    ReactNative-警告:別のコンポーネントの関数本体の内部からコンポーネントを更新することはできません

  18. 18

    TalendジョブでtMapを別のtMapコンポーネントにマップできません

  19. 19

    Apexchartsコンポーネントの値を更新できません

  20. 20

    Vueコンポーネントから別のページにプッシュできません

  21. 21

    React-ブートストラップモーダルが閉じていません。エラー:別のコンポーネントのレンダリング中にコンポーネント( `OnboardPage`)を更新できません

  22. 22

    一部のAndroidSDKコンポーネントをダウンロードして更新できません

  23. 23

    ページを更新しない限り、jQueryアコーディオンが読み込まれません

  24. 24

    マウントされていないコンポーネントのuseEffectエラーでReact状態の更新を実行できません

  25. 25

    Angular2-ルーティングされたページの更新時...ナビゲートを使用するルートでのみ更新された場合、コンポーネントを見つけることができません

  26. 26

    vuejsで2つのコンポーネントを使用できません

  27. 27

    マウントされていないコンポーネントエラーで反応状態の更新を実行できません

  28. 28

    ReactマウントされていないコンポーネントエラーでReact状態の更新を実行できません

  29. 29

    React-router:更新しない限りコンポーネントはレンダリングされません

ホットタグ

アーカイブ