react-spring
react-spring copied to clipboard
[bug]: Decimal prop values under 1, without 0 as a prefix, don't work
Which react-spring target are you using?
- [X]
@react-spring/web - [ ]
@react-spring/three - [ ]
@react-spring/native - [ ]
@react-spring/konva - [ ]
@react-spring/zdog
What version of react-spring are you using?
9.4.5
What's Wrong?
The regex parser of the react-spring doesn't accurately read numbers inside a string which are under 1 and don't have a leading 0 in front of them, i.e. .5 fails, but 0.5 works. I am trying it inside transform: scale(.5)
I am not entirely sure how valid in the CSS world not adding the 0 in front of the decimal point is.
I am semi-embarrassed over how long I spent on this bug, because I could have circumvented it much earlier. But so that someone else doesn't end up on the tumultuous journey I did.
To Reproduce
const props = useSpring({
// Works.
// transform: state ? `scale(1)` : `scale(0.5)`
// Doesn't work
transform: state ? `scale(1)` : `scale(.5)`
});
Expected Behaviour
Spring animations working just fine regardless of the leading 0.
If I were more familiar with the codebase, I'd submit a PR with a test.
Link to repo
https://codesandbox.io/s/optimistic-fire-wzsg1d?file=/src/App.js
Just to clarify, you may think: if he just used the shorthand scale prop, he might have not run into this because he would be using a native JavaScript number, and the react-spring wouldn't have to parse anything.
The reason it took me so long was that I am working with scale3d, which has three values. AND I am using interpolations, whose output ranges I think still only works with one value. So everything was more complex in reality.