如何使用带有“%”定位值的 React Native Animated API?

How to use react native Animated API with "%" positioning values?

我有一个 SVG <line>,我想使用 React Native 的 Animated API 对其进行动画处理。特别是,我想使用 % 的相对定位为线条的 x1x2 属性设置动画。但是,我无法将我的动画值与 "%" 字符串结合起来。以下代码导致 NaN%[object Object]%:

import { Animated } from 'react-native';
import { Svg, Line } from 'react-native-svg';
const AnimatedLine = Animated.createAnimatedComponent(Line);

const myComponent = (props) => {
    //props.underlineX1 is something like: new Animated.Value(50)

    return(
        <Svg
            width="100%"
            height="100%">
            <AnimatedLine
                x1={`${props.underlineX1}%`} //or: x1={`${parseInt(props.underlineX1)}%`}
                x2={`${props.underlineX2}%`} //or: x2={`${parseInt(props.underlineX2)}%`}
                y1="40"
                y2="40"
                stroke={"green"}
                strokeWidth="2" />
        </Svg>
    )
}

props.underlineX1 = 50 时,我应该怎么做才能得到像 50% 这样的值?

编辑:

当使用 JSON.stringify(props.underlineX1) + "%" 方法时,我收到了正确的初始定位值,但是动画不会执行(如果我直接使用绝对值而不使用 "%" 的组合,效果很好).

为了将 Animated.Value 转换为您的百分比字符串,您需要像这样进行插值:

const x1 = props.underlineX1.interpolate({
  inputRange: [0, 100],
  outputRange: ['0%', '100%'],
});

(注意:这是假设您的动画值在 0-100 范围内)