Я только что сделал анимированную кнопку вчера, поэтому я реорганизовал ее, чтобы изменить ее размер.
import React, {useState} from "react";
import { Spring, animated as a } from 'react-spring/renderprops';
const SpringButton = () => {
const [pressed, setPressed] = useState(false);
return (
<Spring native from={{scale: 1}} to={{scale: pressed? 0.8 : 1}}>
{({scale}) => (
<a.button
style={{
backgroundColor: 'red',
height: '100px',
width: '100px',
color: 'rgb(255, 255, 255)',
transform: scale.interpolate(scale => `scale(${scale})`)
}}
onMouseDown={() => setPressed(true)}
onClick={() => setPressed(false)}
onMouseLeave={() => setPressed(false)}
>
Click me
</a.button>
)}
</Spring>
);
}
Это еще не интерфейс подключения, но я думаю, что это поможет вам понять, как это работает. Я также использую более быстрый родной рендеринг. Обработка событий немного отличается от реагирующей позы. И вы также можете настроить конфиг, если хотите, чтобы анимация была очень упругой.
import {config} from 'react-spring/renderprops';
<Spring config={config.wobbly} ...>
https://codesandbox.io/s/7zlrkv4kjj