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

react-spring's fork of rafz one frameloop to rule them all


Version published
Weekly downloads
856K
decreased by-2.69%
Maintainers
1
Install size
79.6 kB
Created
Weekly downloads
 

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 26 Jun 2023

Did you know?

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc