Socket
Socket
Sign inDemoInstall

@react-spring/rafz

Package Overview
Dependencies
0
Maintainers
1
Versions
65
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

@react-spring/rafz


Version published
Maintainers
1
Install size
79.6 kB
Created

Package description

What is @react-spring/rafz?

@react-spring/rafz is a utility for managing requestAnimationFrame loops in React applications. It provides a simple and efficient way to handle animations and other frame-based updates.

What are @react-spring/rafz's main functionalities?

Basic Usage

This feature allows you to schedule a function to run on the next animation frame using the `raf` function.

import { raf } from '@react-spring/rafz';

raf(() => {
  console.log('This will run on the next animation frame');
});

Looping

This feature demonstrates how to create a continuous loop that runs on every animation frame.

import { raf } from '@react-spring/rafz';

let count = 0;
const loop = () => {
  console.log('Frame:', count++);
  raf(loop);
};
raf(loop);

Canceling a Frame

This feature shows how to cancel a scheduled frame using the `cancel` function.

import { raf, cancel } from '@react-spring/rafz';

const id = raf(() => {
  console.log('This will not run');
});
cancel(id);

Other packages similar to @react-spring/rafz

Readme

Source

@react-spring/rafz

Coordinate requestAnimationFrame calls across your app and/or libraries.

  • < 700 bytes min+gzip
  • Timeout support
  • Batching support (eg: ReactDOM.unstable_batchedUpdates)
  • Uncaught errors are isolated
  • Runs continuously (to reduce frame skips)

 

API

import { raf } from '@react-spring/rafz'

// Schedule an update
raf(dt => {})

// Start an update loop
raf(dt => true)

// Cancel an update
raf.cancel(fn)

// Schedule a mutation
raf.write(() => {})

// Before any updates
raf.onStart(() => {})

// Before any mutations
raf.onFrame(() => {})

// After any mutations
raf.onFinish(() => {})

// Set a timeout that runs on nearest frame
raf.setTimeout(() => {}, 1000)

// Use a polyfill
raf.use(require('@essentials/raf').raf)

// Get the current time
raf.now() // => number

// Set how you want to control raf firing
raf.frameLoop = 'demand' | 'always'

 

Notes

  • Functions can only be scheduled once per queue per frame.
  • Thus, trying to schedule a function twice is a no-op.
  • The update phase is for updating JS state (eg: advancing an animation).
  • The write phase is for updating native state (eg: mutating the DOM).
  • Reading is allowed any time before the write phase.
  • Writing is allowed any time after the onFrame phase.
  • Timeout handlers run first on each frame.
  • Any handler (except timeouts) can return true to run again next frame.
  • The raf.cancel function only works with raf handlers.
  • Use raf.sync to disable scheduling in its callback.
  • Override raf.batchedUpdates to avoid excessive re-rendering in React.

 

raf.throttle

Wrap a function to limit its execution to once per frame. If called more than once in a single frame, the last arguments are used.

let log = raf.throttle(console.log)

log(1)
log(2) // nothing logged yet

raf.onStart(() => {
  // "2" is logged by now
})

// Cancel a pending call.
log.cancel()

// Access the wrapped function.
log.handler

Prior art

Keywords

FAQs

Last updated on 25 Jun 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc