behaves similarly to useState but instead will interpolate the value smoothly with the ability to cancel
0
const [duration, setDuration] = useState(500)
const [currentValue, setCurrentValue] = useTween(0)
const [nextValue, setNextValue] = useState(0)
const [hasFinished, setHasFinished] = useState(false)
const onUpdateValue = async () => {
setHasFinished(false)
await setCurrentValue(nextValue, {
duration,
})
setHasFinished(true)
}
const onCancel = () => {
setCurrentValue(nextValue, {
duration: 0,
})
setHasFinished(true)
}
const [const currentValue: number
currentValue, const setCurrentValue: (value: Kaioken.StateSetter<T>, options?: TweenedOptions<number> | undefined) => Promise<void>
setCurrentValue] = useTween<number>(initial: number | (() => number), defaults?: TweenedOptions<number> | undefined): [number, (value: Kaioken.StateSetter<T>, options?: TweenedOptions<number> | undefined) => Promise<void>]
useTween(0)
interface interface TweenedOptions<T>
TweenedOptions<function (type parameter) T in TweenedOptions<T>
T> {
TweenedOptions<T>.delay?: number | undefined
delay?: number
TweenedOptions<T>.duration?: number | ((from: T, to: T) => number) | undefined
duration?: number | ((from: T
from: function (type parameter) T in TweenedOptions<T>
T, to: T
to: function (type parameter) T in TweenedOptions<T>
T) => number)
TweenedOptions<T>.easing?: ((t: number) => number) | undefined
easing?: (t: number
t: number) => number
TweenedOptions<T>.interpolate?: ((a: T, b: T) => (t: number) => T) | undefined
interpolate?: (a: T
a: function (type parameter) T in TweenedOptions<T>
T, b: T
b: function (type parameter) T in TweenedOptions<T>
T) => (t: number
t: number) => function (type parameter) T in TweenedOptions<T>
T
}