Timing field is ignored in react-move
I have followed the simplest example in React-Move but cannot get the timing to work. In a simple example, I display an svg rect and enlarge its width with every button click. There should be a smooth transition but the rect width changes instantly with each button click.
My index.js file is as follows:
import React from 'react';
import ReactDOM from 'react-dom/client';
import {Animate} from 'react-move'
import { easeExpOut } from 'd3-ease'
import { useState} from "react"
import App from './App';
function SVGPanel({ width, height, fill }) {
const [rectsize,setRectSize]=useState(100);
var handleClick = function() {
setRectSize(rectsize*2);
}
return (
<div >
<button onClick={handleClick}>Enlarge</button>
<br/>
<svg className='xmark'
width={width} height={height} version="1.1"
xmlns="http://www.w3.org/2000/svg"
xlink="http://www.w3.org/1999/xlink"
>
<Animate
start={() => ({
x: rectsize,
})}
update={() => ({
x: [rectsize],
timing: { duration: 3000, ease: easeExpOut},
})}
>
{(state) => {
const { x } = state;
//console.log(x);
return (
<rect x={0} y={0} width={x} height={200} stroke="red" fill="pink">
</rect>
)
}}
</Animate>
</svg>
</div>
)
}
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<App />
<SVGPanel width={800} height={400}/>
</React.StrictMode>
);
My package.json is
{
"name": "transitiontest",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"d3-ease": "^3.0.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-move": "^6.5.0",
"react-scripts": "5.0.1",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
Any help would be appreciated. Thank you.
I have created a codepen around this example at codepen. However the timing works just fine over there. I tried rerunning the above code replacing the import statements to match the codepen example as follows:
import React from 'react';
import ReactDOM from 'react-dom/client';
import * as reactMove from "https://cdn.skypack.dev/react-move@6.5.0";
import * as d3Ease from "https://cdn.skypack.dev/d3-ease@3.0.1";
import App from './App';
const { useState } = React;
const { Animate } = reactMove;
const {easeExpOut}=d3Ease;
The code runs fine with these changes but still the timing is ignored.
Comments
Post a Comment