Home Web Front-end JS Tutorial How to implement React-Native timer Timer

How to implement React-Native timer Timer

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

In web development, we usually need to use the timer function, using the setTimeout and setInterval functions. This article mainly introduces the implementation code of the React-Native timer Timer. The editor thinks it is quite good, so I will share it with you now and give it as a reference. Let’s follow the editor to take a look, I hope it can help everyone.

So in ReactNative, is the timer function also provided? The answer is yes.

Let’s take a look at what the official website says first.

The timer is a very important part of an application. React Native implements a timer that is consistent with the browser.

The methods provided are as follows:

  • setTimeout, clearTimeout

  • setInterval, clearInterval

  • setImmediate, clearImmediate

  • ##requestAnimationFrame, cancelAnimationFrame

##setTimeout (fn, 1000) and setInterval (fn,1000)

The meaning is the same as in the web. The former means to execute the fn method after a delay of 1000 milliseconds, and the latter means to execute the fn method every 1000 milliseconds.

requestAnimationFrame(fn) is different from setTimeout(fn, 0). The former will be executed once after each frame refresh, while the latter will be executed as quickly as possible (possibly more than 1000 times per second on iPhone5S) .

setImmediate will be executed at the end of the current JavaScript execution block, just before sending batch response data to the native. Note that if you execute setImmediate in the callback function of setImmediate, it will be executed immediately without waiting for the native code before calling.

The implementation of Promise uses setImmediate to perform asynchronous calls.

InteractionManager(Interaction Manager)


An important reason why native applications feel so smooth is to avoid heavy operations during interactions and animations. In React Native, we are currently limited because we only have one JavaScript execution thread. However, you can use the InteractionManager to ensure that all interactions and animations have been handled before doing the heavy lifting.


The application can schedule a task to be executed after the interaction ends by using the following code:



InteractionManager.runAfterInteractions(() => { 
  // ...需要长时间同步执行的任务... 
});
Copy after login

us Let’s compare it with the previous task scheduling methods:


requestAnimationFrame(): used to execute code that controls view animation within a period of time


setImmediate/ setTimeout/setInterval(): Execute code later. Note that this may delay the animation currently in progress.


runAfterInteractions(): Execute the code later without delaying the currently ongoing animation.

The touch processing system will identify one or more ongoing touch operations as 'interaction', and will delay the execution of the callback function of runAfterInteractions() until all touch operations have ended or been cancelled.



InteractionManager also allows applications to register animations, creating an interaction "handle" when the animation starts, and then clearing it when it ends.

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

TimerMixin


We found that many fatal errors (crashbacks) in React Native applications are related to timers . Specifically, after a component is unmounted, the timer is still activated. To solve this problem, we introduced TimerMixin. If you introduce TimerMixin into your component, you can change your original setTimeout(fn, 500) to this.setTimeout(fn, 500) (just add this. in front of it), and then when your component is uninstalled, all The timer event will also be cleared correctly.

This library is not released with React Native. You need to enter npm i react-timer-mixin --save in the project folder to install it separately.

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

We strongly recommend that you use this.setTimeout(...) provided by react-timer-mixin instead of setTimeout(...). This can avoid many difficult-to-debug bugs.

Translation Note: Mixin belongs to ES5 syntax. For ES6 code, Mixin cannot be used directly.


If your project is written in ES6 code and uses timers, then you only need to remember to clear (clearTimeout/clearInterval) all used timers when unmounting the component.


Then the same effect as TimerMixin can also be achieved. For example:

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); 
 } 
};
Copy after login

Note:

1. The timer function is relatively simple. When using it in es6, you need to remember to clear (clearTimeout/clearInterval) all used timers when unmounting the component.
2. You can use timers to implement some common functions: such as text message countdowns, etc.
3. You can also use Timers for some special scenarios that require delayed execution. For example: the fetch currently provided by RN does not provide a timeout setting. , if the client requests an interface on the backend and the interface times out (the timeout set by the backend service is 10s), then the RN interface will always be loading and cannot be aborted. Then we can use the timer cleverly at this time. If the time of the Request sent by the client is greater than a certain value (5 seconds), then we will directly consider the request to have failed.
4. Today I also found a scenario where setTimeout is used. When the list page loads the next page, if the interface responds quickly, the loading effect will not appear. At this time, in order to have the loading effect, set a 500 millisecond Delay, haha....

Related recommendations:

jQuery sector timer plug-in pietimer usage method sharing

C#中About the solution to the problem of Timer timer re-entry

php Timer page running time monitoring class

The above is the detailed content of How to implement React-Native timer Timer. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to change the version of react native How to change the version of react native Jan 19, 2023 pm 02:31 PM

How to change the version of react native: 1. Enter the React Native project directory and enter "react-native --version" on the command line; 2. View the React Native version managed by npm package; 3. Open the "package.json" file in the project , modify the dependencies field and change the "react-native" version to the target version.

How to set a timer on your iPhone camera How to set a timer on your iPhone camera Apr 14, 2023 am 10:43 AM

How long can you set a timer on your iPhone camera? When you access the timer options in the iPhone's camera app, you'll be given the option to choose between two modes: 3 seconds (3s) and 10 seconds (10s). The first option lets you take a quick selfie from the front or rear camera while you're holding your iPhone. The second option is useful in scenes where you can mount your iPhone on a tripod from a distance to click group photos or selfies. How to Set a Timer on an iPhone Camera While setting a timer on an iPhone camera is a fairly simple process, exactly how to do it varies depending on the iPhone model you're using.

How to implement the timer function in the Workerman document How to implement the timer function in the Workerman document Nov 08, 2023 pm 05:06 PM

How to implement the timer function in the Workerman document Workerman is a powerful PHP asynchronous network communication framework that provides a wealth of functions, including the timer function. Use timers to execute code within specified time intervals, which is very suitable for application scenarios such as scheduled tasks and polling. Next, I will introduce in detail how to implement the timer function in Workerman and provide specific code examples. Step 1: Install Workerman First, we need to install Worker

What is java timer expression What is java timer expression Dec 27, 2023 pm 05:06 PM

The timer expression is used to define the execution plan of the task. The timer expression is based on the model of "execute a task after a given time interval". The expression usually consists of two parts: an initial delay and a time interval.

How to set a timer for daily scheduled task execution in Java? How to set a timer for daily scheduled task execution in Java? Dec 27, 2023 am 11:10 AM

Java timer: How to set a scheduled execution task every day? In daily Java development, we often encounter the need to perform a certain task regularly every day. For example, perform a data backup task at 1 a.m. every day, or send a daily email at 8 p.m., etc. So in Java, we can use timers to achieve such a function. Java provides a variety of timer implementation methods. This article will introduce two methods based on Timer and ScheduledExecutorService.

How does a timer work? How does a timer work? Aug 16, 2023 pm 02:18 PM

The working principle of timers can be divided into two types: hardware timers and software timers. The working principle of the hardware timer is that the clock signal source provides a stable clock signal as the reference of the timer. The counter starts counting from a preset value and is incremented every time the clock signal arrives. When the counter reaches the preset value, the timer will trigger an interrupt signal to notify the interrupt controller to process the corresponding interrupt service routine. In the interrupt service routine, some predetermined operations can be performed. The working principle of the software timer is implemented through library functions or system calls provided by the programming language or system, etc.

How to set up scheduled monthly tasks in Java? How to set up scheduled monthly tasks in Java? Jan 11, 2024 pm 04:50 PM

Java timer: How to set a monthly scheduled execution task? Introduction: In development, we often encounter scenarios that require monthly execution of tasks, such as monthly update of statistical data, regular sending of reports, etc. Java provides a variety of timer implementation methods. This article will introduce how to use Java timers to implement monthly scheduled execution tasks and provide specific code examples. 1. Use the Timer class to implement monthly scheduled tasks. The Timer class is the most basic timer class provided by Java, through which simple scheduled tasks can be implemented.

Master the time.NewTimer function in Go language documentation to implement a single timer Master the time.NewTimer function in Go language documentation to implement a single timer Nov 03, 2023 pm 02:19 PM

Master the time.NewTimer function in the Go language documentation to implement a one-shot timer, and attach specific code examples. Time is the benchmark of our lives, and timers are one of the most commonly used tools in programming. In the Go language, we can use the time package to handle time-related operations, and the NewTimer function can be used to create a one-shot timer. This article will introduce how to use the NewTimer function to implement a simple one-shot timer, and attach specific code examples. In Go language, tim

See all articles