Я не знаю какого-либо отдельного времени для входа и выхода, но вы можете сделать что-то подобное с интерполяцией. Например, вы определяете значение x вместо непрозрачности.
const transition = useTransition(show, s => (s ? "on" : "off"), {
from: { x: 0 },
enter: { x: 1 },
leave: { x: 2 },
config: {
duration: 4000 // duration for the whole animation form start to end
}
});
В методе рендеринга вы можете интерполировать непрозрачность из x:
{transition.map(({ item, props, key }) => (
<animated.div
key={key}
style={{
opacity: props.x.interpolate({
range: [0.0, 1, 1.25, 2],
output: [0, 1, 0, 0]
})
}}
>
{item ? "on" : "off"}
</animated.div>
))}
Так что здесь происходит? Продолжительность 4 се c. Когда ввод x переходит от 0 до 1, он интерполируется как непрозрачность также от 0 до 1 для целых 4 se c. При выходе x переходит от 1 к 2. Он сначала интерполирует от 1 до 1.25 как непрозрачность от 1 до 0, затем непрозрачность остается 0 для остальной части анимации. Таким образом, изменение прозрачности анимации с 1 на 0 произойдет примерно через 1 се c.
Что вы думаете об этом?
Вот пример: https://codesandbox.io/s/zen-curran-nnuiu