reactjs:変更されたデータを検出して通知を表示する方法

ボンディニュービー

こんにちはみんなreactjsの新人です私はajaxデータの結果が以前の状態と異なるときにコンポーネント(通知コンポーネント)をレンダリングできる反応方法、メソッド/ライフサイクルを知りたいだけですか?

var NewsList = React.createClass({
  getInitialState: function() {
    return ({
      data: [],
      showNotif: false,
      showLoading: false
    });
  },
  showNotification: function() {
    return (
      <Notification msg="new data" />
    );
  },
  ajaxRequest: function() {
  //do ajax request, load the result to this.state.data
  },
  componentWillMount: function() {
    this.setState({showLoading: true});
  },
  componentDidMount: function() {
    this.ajaxRequest();
    setInterval(this.ajaxRequest, 2000);
  },
  componentDidUpdate: function(prevProps, prevState) {
    if (this.state.data != prevState.data) {
      //this.setState({showNotif: !this.state.showNotif});
    }
  },
  render: function() {
    var loadingElement, notifElement;
    if (this.state.showLoading) {
      loadingElement = <Loader />
    }
    if(this.state.showNotif) {
      notifElement = this.showNotification();
    }
    return (
      <div>
        {notifElement}
        {loadingElement}
        <NewsItem data={this.state.data} />
      </div>
    );
});

したがってComponentDidUpdate、変更されたstate.dataが読み取られ、変更された場合(ajaxの結果が新しく更新された場合)、がに設定さthis.state.showNotiftrueてレンダリングが呼び出されますshowNotification()が、そうではありません(点滅、true-falseセットバック、 4番目なので、何度も呼び出されます)

それを達成して正しくするために私は何をすべきですか?

marcint339

これを行う最良の方法は、以前と異なる場合にのみデータ状態を更新することです。例えば:

componentDidMount(){
   this.ajaxRequest().done((data)=>{
       if(data !== this.state.data){
           this.setState({data: data, showNotif: true})
   })

ただし、毎回状態を更新して変更を確認する場合は、componentWillReceivePropsを使用することをお勧めします。

componentWillReceiveProps(nextProps, nextState) {
    if (this.state.data != nextState.data) {
        this.setState({showNotif: true});
    }
}

違いは、データの状態を変更するとコンポーネントのレンダリングが発生し、その後componentDidUpdateでコンポーネントを2回目にレンダリングすることです(次のsetState)。componentWillReceivePropsを使用する場合-コンポーネントは1回だけレンダリングします。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonを使用してcsvから呼び出された返されたデータ形式を変更する方法

分類Dev

pysparkデータフレーム列でパターンが変更されたことを検出する方法

分類Dev

ACEエディター:どのブロックが変更されたかを検出する方法

分類Dev

jQueryを使用してフォームで変更された要素を検出する方法

分類Dev

SQLAlcehmyを使用したFlaskアプリ:データベースにコミットされた外部変更を検出する方法は?

分類Dev

jqueryajaxを使用してテーブルに表示された検索データを表示する方法

分類Dev

before_saveで変更されたデータを検証する方法

分類Dev

機能的な方法で変更された材料テーブルデータソースの変更を検出する方法

分類Dev

nodejsでredis PUBLISH / SUBSCRIBEを使用して、データ値が変更されたときにクライアントに通知する方法

分類Dev

Delphi TWebBrowser Webページが最後に表示されてから変更されたことを検出する最良の方法は何ですか?

分類Dev

URLから呼び出されたJSONデータを変換してHTMLテーブルに表示する

分類Dev

ノックアウトを使用してデータテーブルで変更された要素を強調表示/マークする方法は?

分類Dev

SwiftUI:検索バーのテキストが変更されたときにAPI呼び出しをトリガーしてデータソースを取得する方法

分類Dev

変更されたビューのプロパティを検出する方法をXcodeしますか?

分類Dev

INotifyPropertyChangedを使用して、データベースが変更されたときにリストを更新する方法

分類Dev

リモートで変更されたタグを検出する

分類Dev

更新せずにデータが変更されたことを通知する方法は?

分類Dev

Webコンポーネントセットまたは変更されたデータプロパティを検出する方法

分類Dev

Amnesiaを使用して作成されたデータベースを表示する方法

分類Dev

基になるモデルデータが変更されたときに、ViewModelで定義されたプロパティの変更を通知します

分類Dev

PHPでhtaccessを使用して、要求されたGETデータの変更ですでに機能しているGETクエリを変更する方法

分類Dev

複数の画像ターゲットが検出されたときにオーディオ ソースを変更する方法

分類Dev

RecyclerViewで不整合が検出されました、スクロール中にRecyclerViewの内容を変更する方法

分類Dev

HTMLテーブルセルのtextContent(value)の変更を検出し、変更されたデータにアニメーションを適用します

分類Dev

Android Studio通知:Firebaseデータベースでデータが変更された場合にのみ通知を実行する方法

分類Dev

Tabulatorテーブルのデータが変更されてユーザーにデータを保存するように促したかどうかを検出しますか?

分類Dev

データベースが変更されたときにDelphiアプリケーションに通知する通知サーバーを作成する方法

分類Dev

JSONデータを変更して更新されたJSONデータを返す方法

分類Dev

ViewControllersのコードを変更せずにAppDelegateのみが表示されるビューを検出する方法

Related 関連記事

  1. 1

    Pythonを使用してcsvから呼び出された返されたデータ形式を変更する方法

  2. 2

    pysparkデータフレーム列でパターンが変更されたことを検出する方法

  3. 3

    ACEエディター:どのブロックが変更されたかを検出する方法

  4. 4

    jQueryを使用してフォームで変更された要素を検出する方法

  5. 5

    SQLAlcehmyを使用したFlaskアプリ:データベースにコミットされた外部変更を検出する方法は?

  6. 6

    jqueryajaxを使用してテーブルに表示された検索データを表示する方法

  7. 7

    before_saveで変更されたデータを検証する方法

  8. 8

    機能的な方法で変更された材料テーブルデータソースの変更を検出する方法

  9. 9

    nodejsでredis PUBLISH / SUBSCRIBEを使用して、データ値が変更されたときにクライアントに通知する方法

  10. 10

    Delphi TWebBrowser Webページが最後に表示されてから変更されたことを検出する最良の方法は何ですか?

  11. 11

    URLから呼び出されたJSONデータを変換してHTMLテーブルに表示する

  12. 12

    ノックアウトを使用してデータテーブルで変更された要素を強調表示/マークする方法は?

  13. 13

    SwiftUI:検索バーのテキストが変更されたときにAPI呼び出しをトリガーしてデータソースを取得する方法

  14. 14

    変更されたビューのプロパティを検出する方法をXcodeしますか?

  15. 15

    INotifyPropertyChangedを使用して、データベースが変更されたときにリストを更新する方法

  16. 16

    リモートで変更されたタグを検出する

  17. 17

    更新せずにデータが変更されたことを通知する方法は?

  18. 18

    Webコンポーネントセットまたは変更されたデータプロパティを検出する方法

  19. 19

    Amnesiaを使用して作成されたデータベースを表示する方法

  20. 20

    基になるモデルデータが変更されたときに、ViewModelで定義されたプロパティの変更を通知します

  21. 21

    PHPでhtaccessを使用して、要求されたGETデータの変更ですでに機能しているGETクエリを変更する方法

  22. 22

    複数の画像ターゲットが検出されたときにオーディオ ソースを変更する方法

  23. 23

    RecyclerViewで不整合が検出されました、スクロール中にRecyclerViewの内容を変更する方法

  24. 24

    HTMLテーブルセルのtextContent(value)の変更を検出し、変更されたデータにアニメーションを適用します

  25. 25

    Android Studio通知:Firebaseデータベースでデータが変更された場合にのみ通知を実行する方法

  26. 26

    Tabulatorテーブルのデータが変更されてユーザーにデータを保存するように促したかどうかを検出しますか?

  27. 27

    データベースが変更されたときにDelphiアプリケーションに通知する通知サーバーを作成する方法

  28. 28

    JSONデータを変更して更新されたJSONデータを返す方法

  29. 29

    ViewControllersのコードを変更せずにAppDelegateのみが表示されるビューを検出する方法

ホットタグ

アーカイブ