React-Nativeタイマーの実装方法
Web 開発では、通常、setTimeout 関数と setInterval 関数を使用してタイマー関数を使用する必要があります。この記事ではReact-NativeにおけるタイマーTimerの実装コードを中心に紹介しますが、編集者が非常に良いと思ったので参考として共有させていただきます。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。
ReactNativeにはタイマー機能も提供されているのでしょうか? 答えは「はい」です。
まずは公式サイトの内容を見てみましょう。
タイマーはアプリケーションの非常に重要な部分です。 React Native は、ブラウザーと一貫したタイマーを実装します。
提供されるメソッドは次のとおりです:
setTimeout、clearTimeout
setInterval、clearInterval
setImmediate、clearImmediate
-
requestAnimationFrame、cancelAnimationFrame
setTimeout (fn, 1000) および setInterval (fn ,1000)
はWebと同じ意味で、前者は1000ミリ秒遅れてfnメソッドを実行する、後者は1000ミリ秒ごとにfnメソッドを実行するという意味です。
requestAnimationFrame(fn) と setTimeout(fn, 0) は異なります。前者は各フレームの更新後に 1 回実行されますが、後者は可能な限り高速に実行されます (iPhone5S ではおそらく 1 秒あたり 1000 回以上)。
setImmediate は、現在の JavaScript 実行ブロックの最後、バッチ応答データをネイティブに送信する直前に実行されます。なお、setImmediateのコールバック関数内でsetImmediateを実行すると、呼び出し前のネイティブコードを待たずにすぐに実行されます。
Promise の実装では、setImmediate を使用して非同期呼び出しを実行します。
InteractionManager (インタラクションマネージャー)
ネイティブ アプリケーションが非常にスムーズに感じられる重要な理由は、インタラクションやアニメーション中の重い操作を避けるためです。 React Native では、JavaScript 実行のスレッドが 1 つしかないため、現時点では制限があります。ただし、InteractionManager を使用すると、面倒な作業を行う前に、すべてのインタラクションとアニメーションが処理されていることを確認できます。
アプリケーションは、次のコードを使用して、インタラクション終了後に実行されるタスクをスケジュールできます:
InteractionManager.runAfterInteractions(() => { // ...需要长时间同步执行的任务... });
以前のいくつかのタスク スケジュール メソッドと比較してみましょう:
requestAnimationFrame() : コードの実行に使用されます。一定期間にわたるビューアニメーションを制御します
setImmediate/setTimeout/setInterval(): コードを後で実行します。これにより、現在進行中のアニメーションが遅れる可能性があることに注意してください。
runAfterInteractions(): 現在進行中のアニメーションを遅らせることなく、後でコードを実行します。
タッチ処理システムは、1 つ以上の進行中のタッチ操作を「インタラクション」として識別し、すべてのタッチ操作が終了するかキャンセルされるまで、runAfterInteractions() のコールバック関数の実行を遅らせます。
InteractionManager を使用すると、アプリがアニメーションを登録し、アニメーションの開始時にインタラクション「ハンドル」を作成し、終了時にそれをクリアすることもできます。
var handle = InteractionManager.createInteractionHandle(); // 执行动画... (`runAfterInteractions`中的任务现在开始排队等候) // 在动画完成之后 InteractionManager.clearInteractionHandle(handle); // 在所有句柄都清除之后,现在开始依序执行队列中的任务
TimerMixin
React Native アプリケーションの多くの致命的なエラー (クラッシュ) がタイマーに関連していることがわかりました。具体的には、コンポーネントがアンマウントされた後も、タイマーはアクティブ化されたままになります。この問題を解決するために、TimerMixin を導入しました。 TimerMixin をコンポーネントに導入すると、元の setTimeout(fn, 500) を this.setTimeout(fn, 500) に変更できます (先頭に this. を追加するだけです)。コンポーネントがアンロードされると、タイマー イベントはすべても正しくクリアされます。
このライブラリは React Native ではリリースされていません。個別にインストールするには、プロジェクト フォルダーに「npm iact-timer-mixin --save」と入力する必要があります。
var TimerMixin = require('react-timer-mixin'); var Component = React.createClass({ mixins: [TimerMixin], componentDidMount: function() { this.setTimeout( () => { console.log('这样我就不会导致内存泄露!'); }, 500 ); } });
setTimeout(...) の代わりに、react-timer-mixin によって提供される this.setTimeout(...) を使用することを強くお勧めします。これにより、デバッグが難しい多くのバグを回避できます。
翻訳注: Mixin は ES5 構文に属しており、ES6 コードの場合、Mixin を直接使用することはできません。
プロジェクトが ES6 コードで書かれており、タイマーを使用している場合は、コンポーネントをアンマウントするときに、使用されているすべてのタイマーを忘れずにクリア (clearTimeout/clearInterval) するだけで済みます。
それでは、TimerMixinと同じ効果を実現することもできます。例:
import React,{ Component } from 'react-native'; export default class Hello extends Component { componentDidMount() { this.timer = setTimeout( () => { console.log('把一个定时器的引用挂在this上'); }, 500 ); } componentWillUnmount() { // 如果存在this.timer,则使用clearTimeout清空。 // 如果你使用多个timer,那么用多个变量,或者用个数组来保存引用,然后逐个clear this.timer && clearTimeout(this.timer); } };
注:
1. タイマー関数は比較的単純です。es6 で使用する場合は、コンポーネントをアンマウントするときに、使用されているすべてのタイマーを忘れずにクリアする必要があります。
2. タイマーを使用して、テキスト メッセージのカウントダウンなどのいくつかの一般的な機能を実装できます。
3. 遅延実行を必要とするいくつかの特殊なシナリオにもタイマーを使用できます。たとえば、現在 RN によって提供されているフェッチは提供されていません。タイムアウト設定。クライアントがバックエンドでインターフェイスを要求したときにインターフェイスがタイムアウトした場合 (バックエンド サービスによって設定されたタイムアウトは 10 秒)、RN インターフェイスは読み込みを続け、中止できません。この時点でタイマーをうまく使用すると、クライアントから送信されたリクエストの時間が特定の値 (5 秒) を超えた場合、リクエストは失敗したと見なされます。
4. 今日、リストページが次のページをロードするときに、インターフェイスがすぐに応答すると、ロード効果が表示されないというシナリオも見つけました。 500 ミリ秒の遅延です。ははは...
関連する推奨事項:
jQuery セクター タイマー プラグインのパイタイマー共有方法
以上がReact-Nativeタイマーの実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









React Native のバージョンを変更する方法: 1. React Native プロジェクト ディレクトリに入り、コマンド ラインに「react-native --version」と入力します。 2. npm パッケージで管理されている React Native バージョンを表示します。 3. 「パッケージ」を開きます。プロジェクト内の .json" ファイルを編集し、依存関係フィールドを変更し、「react-native」バージョンをターゲット バージョンに変更します。

iPhone のカメラではどれくらいの時間タイマーを設定できますか? iPhone のカメラ アプリのタイマー オプションにアクセスすると、3 秒 (3s) と 10 秒 (10s) の 2 つのモードから選択するオプションが表示されます。最初のオプションでは、iPhone を持ったまま、前面カメラまたは背面カメラから簡単に自撮り写真を撮ることができます。 2 番目のオプションは、遠くから iPhone を三脚に取り付けて集合写真や自撮り写真をクリックするシーンで便利です。 iPhone のカメラにタイマーを設定する方法 iPhone のカメラにタイマーを設定するのは非常に簡単なプロセスですが、正確な方法は使用している iPhone のモデルによって異なります。

タイマー式は、タスクの実行計画を定義するために使用されます。タイマーの表現は「一定時間後にタスクを実行する」というモデルに基づいています。この式は通常、初期遅延と時間間隔の 2 つの部分で構成されます。

Workerman ドキュメントにタイマー機能を実装する方法 Workerman は、タイマー機能を含む豊富な機能を提供する強力な PHP 非同期ネットワーク通信フレームワークです。タイマーを使用して、指定された時間間隔内でコードを実行します。これは、スケジュールされたタスクやポーリングなどのアプリケーション シナリオに非常に適しています。次に、Workerman でタイマー機能を実装する方法と具体的なコード例を詳しく紹介します。ステップ 1: Workerman をインストールする まず、Worker をインストールする必要があります

Java タイマー: スケジュールされた実行タスクを毎日設定するにはどうすればよいですか?日々の Java 開発では、特定のタスクを毎日定期的に実行する必要があることがよくあります。たとえば、データ バックアップ タスクを毎日午前 1 時に実行したり、毎日午後 8 時に電子メールを送信したりするなどです。したがって、Java ではタイマーを使用してそのような機能を実現できます。 Java にはさまざまなタイマーの実装メソッドが用意されていますが、この記事では Timer と ScheduledExecutorService に基づいた 2 つのメソッドを紹介します。

タイマーの動作原理は、ハードウェア タイマーとソフトウェア タイマーの 2 つのタイプに分類できます。ハードウェア タイマーの動作原理は、クロック信号源がタイマーの基準として安定したクロック信号を提供することです。カウンタはプリセット値からカウントを開始し、クロック信号が到着するたびにインクリメントされます。カウンタがプリセット値に達すると、タイマーは割り込み信号をトリガーし、対応する割り込みサービス ルーチンを処理するように割り込みコントローラーに通知します。割り込みサービス ルーチンでは、いくつかの所定の操作を実行できます。ソフトウェアタイマーの動作原理は、プログラミング言語やシステムが提供するライブラリ関数やシステムコールなどによって実装されます。

Java タイマー: 毎月スケジュールされた実行タスクを設定するにはどうすればよいですか?はじめに: 開発では、統計データの毎月の更新、レポートの定期的な送信など、タスクを毎月実行する必要があるシナリオに遭遇することがよくあります。 Java にはさまざまなタイマー実装メソッドが用意されていますが、この記事では、Java タイマーを使用して毎月スケジュールされた実行タスクを実装する方法と、具体的なコード例を紹介します。 1. Timer クラスを使用して毎月スケジュールされたタスクを実装する Timer クラスは Java が提供する最も基本的なタイマー クラスであり、これを使用して単純なスケジュールされたタスクを実装できます。

Go 言語ドキュメントの time.NewTimer 関数をマスターしてワンショット タイマーを実装し、具体的なコード例を添付します。時間は私たちの生活の基準であり、タイマーはプログラミングで最もよく使用されるツールの 1 つです。 Go 言語では、time パッケージを使用して時間関連の操作を処理でき、NewTimer 関数を使用してワンショット タイマーを作成できます。この記事では、NewTimer 関数を使用して簡単なワンショット タイマーを実装する方法を紹介し、具体的なコード例を添付します。 Go 言語で言うと、ティム
