Controller
Manages SpringValue
s for our spring hooks.
Usage
Basic usage, the Controller class you initialise can be used as an imperative api
to control your SpringValues
. Meanwhile you pass Controller.springs
to your animated
component.
import { Component, createRef } from 'react' import { Controller, animated } from '@react-spring/web' class AnimatedComponent extends Component { isShowing = createRef(false) animations = new Controller({ opacity: 0 }) toggle = () => { this.animations.start({ opacity: this.isShowing ? 1 : 0 }) this.isShowing = !this.isShowing } render() { return ( <> <button onClick={this.toggle}>click</button> <animated.div style={this.animations.springs}>I will fade</animated.div> </> ) } }
Constructor Arguments
Below is the arguments that can passed to the constructor of the Controller
class.
const ControllerProps = { ref, from, loop, onStart, onRest, onChange, onPause, onResume, onProps, onResolve, }
Properties
Prop | Type | Default |
---|---|---|
idle | SpringValues | {} |
item | any | – |
queue | ControllerQueue | [] |
ref | SpringRef | – |
springs | SpringValues | {} |
Methods
Get
Gets the current values of our springs.
get(): State & UnknownProps;
Set
Set the current values without animating.
set(values: Partial<State>): void;
Update
Push an update onto the queue of each value.
update(props: ControllerUpdate<State> | Falsy): this;
Start
Start the queued animations for every spring, and resolve the returned promise once all queued animations have finished or been cancelled. When you pass a queue (instead of nothing), that queue is used instead of the queued animations added with the update
method, which are left alone.
start(props?: OneOrMore<ControllerUpdate<State>> | null): AsyncResult<this>;
Stop
Stop all queued animations for every spring at the same time, or alternatively provide a selection of keys that should be stopped.
stop(): this; stop(keys: OneOrMore<string>): this; stop(cancel: boolean): this; stop(cancel: boolean, keys: OneOrMore<string>): this; stop(keys?: OneOrMore<string>): this; stop(cancel: boolean, keys?: OneOrMore<string>): this;
Pause
Freeze the active animation in time.
pause(keys?: OneOrMore<string>): this;
Resume
Resume the animation if paused.
resume(keys?: OneOrMore<string>): this;
Each
Call a function once per spring value.
each(iterator: (spring: SpringValue, key: string) => void): void