Maison interface Web js tutoriel Comment implémenter le minuteur React-Native

Comment implémenter le minuteur React-Native

Jan 27, 2018 pm 04:54 PM
react-native timer 定时器

Dans le développement Web, nous devons généralement utiliser la fonction timer, en utilisant les fonctions setTimeout et setInterval. Cet article présente principalement le code d'implémentation du timer Timer dans React-Native. L'éditeur pense qu'il est plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur pour y jeter un œil, j'espère que cela pourra aider tout le monde.

Alors ReactNative fournit-il également la fonction de minuterie ? La réponse est oui.

Jetons d’abord un coup d’œil à ce que dit le site officiel.

La minuterie est une partie très importante d'une application. React Native implémente une minuterie cohérente avec le navigateur.

Les méthodes fournies sont les suivantes :

  • setTimeout, clearTimeout

  • setInterval, clearInterval

  • setImmediate, clearImmediate

  • requestAnimationFrame, CancelAnimationFrame

setTimeout (fn, 1000) et setInterval (fn,1000 )

a la même signification que sur le Web. Le premier signifie exécuter la méthode fn après un délai de 1000 millisecondes, et le second signifie exécuter la méthode fn toutes les 1000 millisecondes.

requestAnimationFrame(fn) est différent de setTimeout(fn, 0). Le premier sera exécuté une fois après chaque rafraîchissement d'image, tandis que le second sera exécuté le plus rapidement possible (éventuellement plus de 1000 fois par seconde). iPhone5S) .

setImmediate sera exécuté à la fin du bloc d'exécution JavaScript actuel, juste avant d'envoyer les données de réponse par lots au natif. Notez que si vous exécutez setImmediate dans la fonction de rappel de setImmediate, elle sera exécutée immédiatement sans attendre le code natif avant d'appeler.

L'implémentation de Promise utilise setImmediate pour effectuer des appels asynchrones.

InteractionManager (Interaction Manager)

Une raison importante pour laquelle les applications natives sont si fluides est d'éviter les opérations lourdes lors des interactions et des animations. Dans React Native, nous sommes actuellement limités car nous n'avons qu'un seul thread d'exécution JavaScript. Cependant, vous pouvez utiliser InteractionManager pour vous assurer que toutes les interactions et animations ont été gérées avant de faire le gros du travail.

L'application peut planifier l'exécution d'une tâche après la fin de l'interaction en utilisant le code suivant :


InteractionManager.runAfterInteractions(() => { 
  // ...需要长时间同步执行的任务... 
});
Copier après la connexion

Comparons-le avec plusieurs méthodes de planification de tâches précédentes :

requestAnimationFrame() : utilisée pour exécuter du code qui contrôle l'animation de la vue sur une période de temps

setImmediate/setTimeout /setInterval() : exécute le code plus tard. Notez que cela peut retarder l'animation en cours.

runAfterInteractions() : exécute le code plus tard sans retarder l'animation en cours.
Le système de traitement tactile identifiera une ou plusieurs opérations tactiles en cours comme « interaction » et retardera l'exécution de la fonction de rappel de runAfterInteractions() jusqu'à ce que toutes les opérations tactiles soient terminées ou annulées.

InteractionManager permet également aux applications d'enregistrer des animations, en créant un « handle » d'interaction lorsque l'animation démarre, puis en l'effaçant à la fin.


var handle = InteractionManager.createInteractionHandle(); 
// 执行动画... (`runAfterInteractions`中的任务现在开始排队等候) 
// 在动画完成之后 
InteractionManager.clearInteractionHandle(handle); 
// 在所有句柄都清除之后,现在开始依序执行队列中的任务
Copier après la connexion

TimerMixin

Nous avons constaté que de nombreuses erreurs fatales (crashbacks) dans les applications React Native sont liées à timing lié à l’appareil. Plus précisément, après le démontage d'un composant, la minuterie est toujours activée. Pour résoudre ce problème, nous avons introduit TimerMixin. Si vous introduisez TimerMixin dans votre composant, vous pouvez changer votre setTimeout(fn, 500) d'origine en this.setTimeout(fn, 500) (ajoutez simplement ceci. devant), puis lorsque votre composant est déchargé, tout le timer l’événement sera également effacé correctement.

Cette bibliothèque n'est pas publiée avec React Native. Vous devez entrer npm i react-timer-mixin --save dans le dossier du projet pour l'installer séparément.


var TimerMixin = require('react-timer-mixin'); 
 
var Component = React.createClass({ 
 mixins: [TimerMixin], 
 componentDidMount: function() { 
  this.setTimeout( 
   () => { console.log('这样我就不会导致内存泄露!'); }, 
   500 
  ); 
 } 
});
Copier après la connexion

Nous vous recommandons fortement d'utiliser this.setTimeout(...) fourni par réagir-timer-mixin au lieu de setTimeout(...). Cela peut éviter de nombreux bugs difficiles à résoudre.

Annotation : Mixin appartient à la syntaxe ES5. Pour le code ES6, Mixin ne peut pas être utilisé directement.

Si votre projet est écrit en code ES6 et utilise des timers, alors il vous suffit de penser à effacer (clearTimeout/clearInterval) tous les timers utilisés lors du démontage du composant.

Ensuite, vous pouvez également obtenir le même effet que TimerMixin. Par exemple :


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); 
 } 
};
Copier après la connexion

Remarque :

1. La fonction timer est relativement simple. Lorsque vous l'utilisez dans es6, vous devez vous rappeler d'effacer (clearTimeout/clearInterval) toutes les minuteries utilisées lors du démontage du composant.
2. Vous pouvez utiliser des minuteries pour implémenter certaines fonctions courantes : telles que les comptes à rebours des messages texte, etc.
3. Vous pouvez également utiliser des minuteries pour certains scénarios spéciaux qui nécessitent une exécution retardée. RN ne fournit pas de paramètre de délai d'attente. Si le client demande une interface sur le backend et que l'interface expire (le délai d'attente défini par le service backend est de 10 s), alors l'interface RN sera toujours en cours de chargement et ne pourra pas être abandonnée. Ensuite, nous pouvons utiliser intelligemment le timer à ce moment-là. Si le temps de la requête envoyée par le client est supérieur à une certaine valeur (5 secondes), alors nous considérerons directement que la requête a échoué.
4. Aujourd'hui, j'ai également trouvé un scénario où setTimeout est utilisé Lorsque la page de liste charge la page suivante, si l'interface répond rapidement, il n'y aura pas d'effet de chargement à ce moment-là, afin d'avoir l'effet de chargement. définissez un délai de 500 millisecondes, haha....

Recommandations associées :

Partage de la façon d'utiliser le plug-in de minuterie de secteur jQuery pietimer

C# À propos de la solution au problème de ré-entrée du minuteur

Classe de surveillance du temps d'exécution de la page PHP Timer

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment changer la version de React Native Comment changer la version de React Native Jan 19, 2023 pm 02:31 PM

Comment changer la version de React Native : 1. Entrez dans le répertoire du projet React Native et entrez "react-native --version" sur la ligne de commande ; 2. Vérifiez la version de React Native gérée par le package npm 3. Ouvrez le " package ; .json" dans le projet, modifiez le champ des dépendances et remplacez la version "react-native" par la version cible.

Comment régler une minuterie sur l'appareil photo de votre iPhone Comment régler une minuterie sur l'appareil photo de votre iPhone Apr 14, 2023 am 10:43 AM

Combien de temps pouvez-vous régler une minuterie sur l'appareil photo de votre iPhone ? Lorsque vous accédez aux options de minuterie dans l'application appareil photo de l'iPhone, vous aurez la possibilité de choisir entre deux modes : 3 secondes (3 s) et 10 secondes (10 s). La première option vous permet de prendre un selfie rapide depuis la caméra avant ou arrière pendant que vous tenez votre iPhone. La deuxième option est utile dans les scènes où vous pouvez monter votre iPhone sur un trépied à distance pour cliquer sur des photos de groupe ou des selfies. Comment régler une minuterie sur un appareil photo iPhone Bien que régler une minuterie sur un appareil photo iPhone soit un processus assez simple, la manière exacte de le faire varie en fonction du modèle d'iPhone que vous utilisez.

Qu'est-ce que l'expression du minuteur Java Qu'est-ce que l'expression du minuteur Java Dec 27, 2023 pm 05:06 PM

L'expression timer est utilisée pour définir le plan d'exécution de la tâche. L'expression du minuteur est basée sur le modèle « exécuter une tâche après un intervalle de temps donné ». L'expression se compose généralement de deux parties : un délai initial et un intervalle de temps.

Comment implémenter la fonction de minuterie dans le document Workerman Comment implémenter la fonction de minuterie dans le document Workerman Nov 08, 2023 pm 05:06 PM

Comment implémenter la fonction timer dans le document Workerman Workerman est un puissant framework de communication réseau asynchrone PHP qui fournit une multitude de fonctions, y compris la fonction timer. Utilisez des minuteries pour exécuter du code dans des intervalles de temps spécifiés, ce qui est très approprié pour les scénarios d'application tels que les tâches planifiées et les interrogations. Ensuite, je présenterai en détail comment implémenter la fonction de minuterie dans Workerman et fournirai des exemples de code spécifiques. Étape 1 : Installer Workerman Tout d’abord, nous devons installer Worker

Comment définir une minuterie pour l'exécution des tâches planifiées quotidiennement en Java ? Comment définir une minuterie pour l'exécution des tâches planifiées quotidiennement en Java ? Dec 27, 2023 am 11:10 AM

Minuteur Java : Comment définir une tâche d'exécution planifiée chaque jour ? Dans le développement Java quotidien, nous rencontrons souvent le besoin d’effectuer régulièrement une certaine tâche chaque jour. Par exemple, effectuez une tâche de sauvegarde de données à 1h du matin tous les jours, ou envoyez un email quotidiennement à 20h tous les jours, etc. Ainsi en Java, nous pouvons utiliser des timers pour réaliser une telle fonction. Java fournit une variété de méthodes d'implémentation de minuterie. Cet article présentera deux méthodes basées sur Timer et ScheduledExecutorService.

Comment fonctionne une minuterie ? Comment fonctionne une minuterie ? Aug 16, 2023 pm 02:18 PM

Le principe de fonctionnement des minuteries peut être divisé en deux types : les minuteries matérielles et les minuteries logicielles. Le principe de fonctionnement du temporisateur matériel est que la source du signal d'horloge fournit un signal d'horloge stable comme référence du temporisateur. Le compteur commence à compter à partir d'une valeur prédéfinie et est incrémenté à chaque fois que le signal d'horloge arrive. Lorsque le compteur atteint la valeur prédéfinie, la minuterie déclenche un signal d'interruption pour informer le contrôleur d'interruption de traiter la routine de service d'interruption correspondante. Dans la routine de service d'interruption, certaines opérations prédéterminées peuvent être effectuées. Le principe de fonctionnement du minuteur logiciel est implémenté via des fonctions de bibliothèque ou des appels système fournis par le langage de programmation ou le système, etc.

Comment configurer des tâches mensuelles planifiées en Java ? Comment configurer des tâches mensuelles planifiées en Java ? Jan 11, 2024 pm 04:50 PM

Minuteur Java : Comment définir une tâche d'exécution planifiée mensuellement ? Introduction : En développement, nous rencontrons souvent des scénarios qui nécessitent l'exécution mensuelle de tâches, comme la mise à jour mensuelle des données statistiques, l'envoi régulier de rapports, etc. Java fournit une variété de méthodes d'implémentation de minuterie. Cet article explique comment utiliser les minuteries Java pour implémenter des tâches d'exécution planifiées mensuellement et fournit des exemples de code spécifiques. 1. Utilisez la classe Timer pour implémenter des tâches planifiées mensuellement. La classe Timer est la classe timer la plus basique fournie par Java, grâce à laquelle des tâches planifiées simples peuvent être implémentées.

Maîtrisez la fonction time.NewTimer dans la documentation en langage Go pour implémenter un timer unique Maîtrisez la fonction time.NewTimer dans la documentation en langage Go pour implémenter un timer unique Nov 03, 2023 pm 02:19 PM

Maîtrisez la fonction time.NewTimer dans la documentation du langage Go pour implémenter une minuterie ponctuelle et joignez des exemples de code spécifiques. Le temps est la référence de nos vies et les minuteries sont l'un des outils les plus couramment utilisés en programmation. Dans le langage Go, nous pouvons utiliser le package time pour gérer les opérations liées au temps, et la fonction NewTimer peut être utilisée pour créer une minuterie ponctuelle. Cet article explique comment utiliser la fonction NewTimer pour implémenter un minuteur ponctuel simple et joint des exemples de code spécifiques. En langage Go, Tim

See all articles