我有一个反应功能组件Svg
被用作底部标签栏的图标。在路线改变时,电流state.index
与路线进行比较index
。本质上是布尔状态的结果isFocused
被传递给 Svg。
我正在尝试根据此状态为 Svg 设置动画,并且无法使用 reanimated 完成简单的操作。我最确定 fill 的值没有在useAnimatedProps
hook 中更新,但我缺乏对 reanimated 有深入了解的经验。任何帮助将不胜感激
import Animated, {
useAnimatedProps,
useSharedValue,
} from 'react-native-reanimated';
import Svg, { Circle, Path } from 'react-native-svg';
const AnimatedSvg = Animated.createAnimatedComponent(Svg);
export default ({ isFocused }) => {
const fill = useSharedValue({ fill: 'transparent' });
const animatedProps = useAnimatedProps(() => {
isFocused
? (fill.value = { fill: 'red' })
: (fill.value = { fill: 'transparent' });
return fill.value;
});
return (
<AnimatedSvg
xmlns="http://www.w3.org/2000/svg"
width={24}
height={24}
animatedProps={animatedProps}
stroke={'white'}
strokeWidth={2}
strokeLinecap="round"
strokeLinejoin="round"
className="feather feather-search">
<Circle cx={11} cy={11} r={8} />
<Path d="m21 21-4.35-4.35" />
</AnimatedSvg>
);
};