react-nativeのカウントダウンタイマー

シャシカ

画面がreact-nativeで読み込まれたときに、3から1にカウントダウンしたいと思います。このようにsetTimeOutで試してみましたが、うまくいきませんでした。私はここで何が間違っているのですか?どうすればこれを達成できますか?画面が読み込まれたら、1秒間隔で3 =-> 2 ==> 1を表示したいと思います。これが私のコードです。

 constructor(props) {
        super(props);

        this.state = {
            timer: 3
        }
    }

    // componentDidMount 
    componentDidMount() {
        setTimeout(() => {
            this.setState({
                timer: --this.state.timer
            })
        }, 1000);
    }
モハメッド・アシュファク

コードでは、setTimeoutはcomponentDidMountで呼び出され、ComponetDidMountはコンポーネントのライフサイクル全体で1回呼び出されます。したがって、setTimeout内の関数は1回だけ呼び出されます。つまり、最初のレンダリングの直後ですが、後続のレンダリングでは、componentDidMountは呼び出されません。

問題の解決策は次のとおりです。

constructor(props: Object) {
  super(props);
  this.state ={ timer: 3}
}

componentDidMount(){
  this.interval = setInterval(
    () => this.setState((prevState)=> ({ timer: prevState.timer - 1 })),
    1000
  );
}

componentDidUpdate(){
  if(this.state.timer === 1){ 
    clearInterval(this.interval);
  }
}

componentWillUnmount(){
 clearInterval(this.interval);
}

render() {
  return (
    <View style={{ flex: 1, justifyContent: 'center', }}>
      <Text> {this.state.timer} </Text>
    </View> 
  )
}

「setInterval」と「setTimeout」

setStateオブジェクトの代わりに関数を使用する利点

setIntervalによるメモリリーク:clearIntervalが呼び出される前にコンポーネントをアンマウントすると、開始時に設定された間隔とタイマーが停止しないため、メモリリークが発生します。Reactは、コンポーネントがマウント解除または削除されたときにクリアする必要があるものをすべてクリアする機会として、componentWillUnmountライフサイクルメソッドを提供します。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Reactのカウントダウンタイマー

分類Dev

React-Reduxのカウントダウンタイマー機能

分類Dev

Reactでカウントダウンタイマーを表示する方法

分類Dev

React:カウントダウンタイマー、状態の値を毎秒減らす方法は?

分類Dev

React:カウントダウンタイマー、状態の値を毎秒減らす方法は?

分類Dev

Reactフックのみを使用した完全に機能するカウントダウンタイマー

分類Dev

フック付きのReactでこのカウントダウンタイマーを実装するにはどうすればよいですか?

分類Dev

React-Select MaterialUIのドロップダウンメニューをカスタマイズする方法

分類Dev

マウスダウンと同等のReact Native

分類Dev

React-子コンポーネントのカスタムレイアウト

分類Dev

Reactコンポーネントのアンカータグの属性をダウンロードします

分類Dev

アニメーション画像でReact Nativeをカウントダウンする方法は?

分類Dev

React Nativeのタップダウンイベントをキャッチする方法は?

分類Dev

react-nativeiosのバックグラウンドタイマー

分類Dev

React Nativeで「関数コンポーネント」のレンダリングカウントをどのように追跡しますか?

分類Dev

RouterAndroidのドロップダウンアイコン+タイトルタップイベントのキャッチ+検索入力(react native)

分類Dev

Reactカウンターフックがインクリメントしない

分類Dev

react-nativeカウンター、関数は未定義です

分類Dev

カウントダウンの子からのReactセット状態

分類Dev

React Nativeフォントのアウトライン/ textShadow

分類Dev

React.jsでタイマーカウント=== 0のときにボタンを非表示に設定するにはどうすればよいですか?

分類Dev

Reactは、個別のカウントダウンで複数のアラートをフックします

分類Dev

React.jsでマウスクリックするとカウンターを継続的にインクリメントします

分類Dev

Reactネイティブカウントダウンサークルを実装する方法

分類Dev

Reactルーターの遷移インおよびアウトイベント

分類Dev

React-Native:コンポーネントをアンマウントするときに関数のバインドを解除する必要がありますか?

分類Dev

React Native、「マウントされていないコンポーネントのsetState()」警告

分類Dev

Reactフックコンポーネントマウントでリダイレクト

分類Dev

ダウンロードアンカータグはブラウザでファイルを開きますが、Reactコンポーネントではダウンロードしません

Related 関連記事

  1. 1

    Reactのカウントダウンタイマー

  2. 2

    React-Reduxのカウントダウンタイマー機能

  3. 3

    Reactでカウントダウンタイマーを表示する方法

  4. 4

    React:カウントダウンタイマー、状態の値を毎秒減らす方法は?

  5. 5

    React:カウントダウンタイマー、状態の値を毎秒減らす方法は?

  6. 6

    Reactフックのみを使用した完全に機能するカウントダウンタイマー

  7. 7

    フック付きのReactでこのカウントダウンタイマーを実装するにはどうすればよいですか?

  8. 8

    React-Select MaterialUIのドロップダウンメニューをカスタマイズする方法

  9. 9

    マウスダウンと同等のReact Native

  10. 10

    React-子コンポーネントのカスタムレイアウト

  11. 11

    Reactコンポーネントのアンカータグの属性をダウンロードします

  12. 12

    アニメーション画像でReact Nativeをカウントダウンする方法は?

  13. 13

    React Nativeのタップダウンイベントをキャッチする方法は?

  14. 14

    react-nativeiosのバックグラウンドタイマー

  15. 15

    React Nativeで「関数コンポーネント」のレンダリングカウントをどのように追跡しますか?

  16. 16

    RouterAndroidのドロップダウンアイコン+タイトルタップイベントのキャッチ+検索入力(react native)

  17. 17

    Reactカウンターフックがインクリメントしない

  18. 18

    react-nativeカウンター、関数は未定義です

  19. 19

    カウントダウンの子からのReactセット状態

  20. 20

    React Nativeフォントのアウトライン/ textShadow

  21. 21

    React.jsでタイマーカウント=== 0のときにボタンを非表示に設定するにはどうすればよいですか?

  22. 22

    Reactは、個別のカウントダウンで複数のアラートをフックします

  23. 23

    React.jsでマウスクリックするとカウンターを継続的にインクリメントします

  24. 24

    Reactネイティブカウントダウンサークルを実装する方法

  25. 25

    Reactルーターの遷移インおよびアウトイベント

  26. 26

    React-Native:コンポーネントをアンマウントするときに関数のバインドを解除する必要がありますか?

  27. 27

    React Native、「マウントされていないコンポーネントのsetState()」警告

  28. 28

    Reactフックコンポーネントマウントでリダイレクト

  29. 29

    ダウンロードアンカータグはブラウザでファイルを開きますが、Reactコンポーネントではダウンロードしません

ホットタグ

アーカイブ