ReactマウントされたコンポーネントsetIntervalは、「状態の更新」のために間隔をクリアしていません

ボギー

今日の日付をで初期化した状態に設定する関数にインターバルタイマーを設定していますcomponenteDidMountの間隔をクリアしましたがcomponentWillUnmount、コンポーネントをすばやく切り替えた後でもエラーが発生します(これがバグを見つけた方法です)。

これはエラーです:

警告: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.

_isMountedサイクル全体でプライベート変数をfalseからtrueに操作し、setTodaysDate()状態を設定する前に条件付きチェックを強制しようとしましたが、それでも問題は解決しませんでした。

  // _isMounted = false;  <----- tried this method to no avail

  state = {
    selectedDate: ""
  };

  componentDidMount() {
    this.setTodaysDate();
    this.interval = setInterval(() => this.setTodaysDate(), 40 * 1000 * 360);
    // this._isMounted = true;  <----- tried
  }


  componentWillUnmount() {
    clearInterval(this.interval);
    // this._isMounted = false;  <----- tried
  }


  setTodaysDate = () => {
    // if (this._isMounted) {  <----- tried
    this.setState({
      selectedDate: moment(moment(), "YYYY-MM-DDTHH:mm:ss")
        .add(1, "days")
        .format("YYYY-MM-DD")
    });

    // }  <----- tried

  }

他に「漏れを塞ぐ」方法がわからない。

編集:以下のGabrieleのおかげで、本当の原因は、アンマウント中にキャンセルしたことがなく、「リーク」につながる、使用していたlodashデバウンスメソッド(setStateも使用)でした。

  debounceCloseAlert = _.debounce(() => {
    this.setState({ alertVisible: false });
  }, 5000);
ガブリエレペトリオーリ

あなたのコンポーネントを見て、私は問題があなたにあるとは思わないsetIntervalそれを処理する方法は正しいアプローチであり、上記のエラーを生成するべきではありません。

私が信じる問題_.debounceはあなたのdebounceCloseAlert方法での使用にありますまた、タイムアウトが発生し、どこでもそれをクリアしていません。

からの戻り値に_.debounce.cancel()、間隔をクリアするメソッドが含まれています。だからthis.debounceCloseAlert.cancel();あなたcomponentWillUnmount呼ぶだけでそれはクリアされます。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

マウントされていないコンポーネントでReact状態の更新を実行できません-間隔をクリアしている場合でも

分類Dev

間隔関数でマウントされていないコンポーネントの問題に対してReact状態の更新を実行できません

分類Dev

マウントされていないコンポーネントの状態更新を反応させます。これは何もしませんが、アプリケーションのメモリリークを示しています

分類Dev

コンポーネントは更新された状態のreactjsを受信していません

分類Dev

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

分類Dev

React JS with Reduxは、トリガーされたアクションの状態を更新していません

分類Dev

`アンマウントされた`コンポーネントでReact状態の更新を実行できません

分類Dev

警告:SceneView(Pagerによって作成された)で、マウントされていないコンポーネントに対してReact状態の更新を実行できません

分類Dev

状態は更新されていますが、コンポーネントは小道具内の更新された状態をReactjsの子コンポーネントに送信していません

分類Dev

「警告:マウントされていないコンポーネントでReact状態の更新を実行できません」という警告を解決するにはどうすればよいですか?setInterval関数から?

分類Dev

「警告:マウントされていないコンポーネントでReact状態の更新を実行できません」という警告を解決するにはどうすればよいですか?setInterval関数から?

分類Dev

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

分類Dev

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

分類Dev

警告:マウントされていないコンポーネントでReact状態の更新を実行することはできません

分類Dev

axiosキャンセルトークンが設定されていても、マウント解除されたコンポーネントでReact状態の更新を実行できません

分類Dev

useEffectにisCancelledフラグを追加しましたが、「マウントされていないコンポーネントでReact状態の更新を実行できません...」

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

React-Native:警告:マウントされていないコンポーネントでReact状態の更新を実行できません

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

警告の取得:マウントされていないコンポーネントでReact状態の更新を実行できません

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

修正方法:警告:マウントされていないコンポーネントでReact状態の更新を実行できません

Related 関連記事

  1. 1

    マウントされていないコンポーネントでReact状態の更新を実行できません-間隔をクリアしている場合でも

  2. 2

    間隔関数でマウントされていないコンポーネントの問題に対してReact状態の更新を実行できません

  3. 3

    マウントされていないコンポーネントの状態更新を反応させます。これは何もしませんが、アプリケーションのメモリリークを示しています

  4. 4

    コンポーネントは更新された状態のreactjsを受信していません

  5. 5

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

  6. 6

    React JS with Reduxは、トリガーされたアクションの状態を更新していません

  7. 7

    `アンマウントされた`コンポーネントでReact状態の更新を実行できません

  8. 8

    警告:SceneView(Pagerによって作成された)で、マウントされていないコンポーネントに対してReact状態の更新を実行できません

  9. 9

    状態は更新されていますが、コンポーネントは小道具内の更新された状態をReactjsの子コンポーネントに送信していません

  10. 10

    「警告:マウントされていないコンポーネントでReact状態の更新を実行できません」という警告を解決するにはどうすればよいですか?setInterval関数から?

  11. 11

    「警告:マウントされていないコンポーネントでReact状態の更新を実行できません」という警告を解決するにはどうすればよいですか?setInterval関数から?

  12. 12

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

  13. 13

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

  14. 14

    警告:マウントされていないコンポーネントでReact状態の更新を実行することはできません

  15. 15

    axiosキャンセルトークンが設定されていても、マウント解除されたコンポーネントでReact状態の更新を実行できません

  16. 16

    useEffectにisCancelledフラグを追加しましたが、「マウントされていないコンポーネントでReact状態の更新を実行できません...」

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

    React-Native:警告:マウントされていないコンポーネントでReact状態の更新を実行できません

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

    警告の取得:マウントされていないコンポーネントでReact状態の更新を実行できません

  25. 25

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

  26. 26

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

  27. 27

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

  28. 28

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

  29. 29

    修正方法:警告:マウントされていないコンポーネントでReact状態の更新を実行できません

ホットタグ

アーカイブ