尝试动态设置 viewBox 宽度/高度
Trying to set viewBox width / height dynamically
我正在尝试使用 React Native Animated 以编程方式放大 SVG。
目前我正在测试代码,证明一些事情。
我似乎无法传递使用 React.useState(new Animated.Value(0)
设置的 viewBox 大小
我得到一个错误:无效 viewBox
prop:0 0 [object Object][object Object]
以下是我的部分代码:
const AnimatedSVG = Animated.createAnimatedComponent(Svg);
const [widthValue, setWidthValue] = React.useState(new Animated.Value(1920));
const [heightValue, setHeightValue] = React.useState(new Animated.Value(1080));
const segmentClick = (event, someParameter) => {
Animated.timing(widthValue, {
toValue: 3000,
duration: 1000,
useNativeDriver: true,
easing: Easing.linear,
}).start();
};
<AnimatedSVG x="0px" y="0px" viewBox={`0 0 ${widthValue} ${heightValue}`} style="enable-background:new 0 0 1920 1080; ">
如前所述,我得到的错误是:无效 viewBox
prop:0 0 [object Object][object Object]
widthValue 和 widthHeight 似乎是对象。
但是如果我 console.log 他们我可以看到他们打印出来 1920 / 1080
我怀疑我遗漏了一些非常简单的东西,但无法在网上找到答案。
您可以尝试创建一个动画值的侦听器,并更新状态:
const [widthValue, setWidthValue] = React.useState(1920);
const widthAnimated = React.useRef(new Animated.Value(1920)).current;
const segmentClick = (event, someParameter) => {
widthAnimated.addListener((e) => setWidthValue(e.value)) // Add listener
Animated.timing(widthAnimated, {
toValue: 3000,
duration: 1000,
useNativeDriver: true,
easing: Easing.linear,
}).start();
};
在 SVG 中:
<AnimatedSVG x="0px" y="0px" viewBox={`0 0 ${widthValue} ${heightValue}`} style="enable-background:new 0 0 1920 1080; ">
对身高做同样的事情。
我正在尝试使用 React Native Animated 以编程方式放大 SVG。 目前我正在测试代码,证明一些事情。 我似乎无法传递使用 React.useState(new Animated.Value(0)
设置的 viewBox 大小我得到一个错误:无效 viewBox
prop:0 0 [object Object][object Object]
以下是我的部分代码:
const AnimatedSVG = Animated.createAnimatedComponent(Svg);
const [widthValue, setWidthValue] = React.useState(new Animated.Value(1920));
const [heightValue, setHeightValue] = React.useState(new Animated.Value(1080));
const segmentClick = (event, someParameter) => {
Animated.timing(widthValue, {
toValue: 3000,
duration: 1000,
useNativeDriver: true,
easing: Easing.linear,
}).start();
};
<AnimatedSVG x="0px" y="0px" viewBox={`0 0 ${widthValue} ${heightValue}`} style="enable-background:new 0 0 1920 1080; ">
如前所述,我得到的错误是:无效 viewBox
prop:0 0 [object Object][object Object]
widthValue 和 widthHeight 似乎是对象。
但是如果我 console.log 他们我可以看到他们打印出来 1920 / 1080
我怀疑我遗漏了一些非常简单的东西,但无法在网上找到答案。
您可以尝试创建一个动画值的侦听器,并更新状态:
const [widthValue, setWidthValue] = React.useState(1920);
const widthAnimated = React.useRef(new Animated.Value(1920)).current;
const segmentClick = (event, someParameter) => {
widthAnimated.addListener((e) => setWidthValue(e.value)) // Add listener
Animated.timing(widthAnimated, {
toValue: 3000,
duration: 1000,
useNativeDriver: true,
easing: Easing.linear,
}).start();
};
在 SVG 中:
<AnimatedSVG x="0px" y="0px" viewBox={`0 0 ${widthValue} ${heightValue}`} style="enable-background:new 0 0 1920 1080; ">
对身高做同样的事情。