我是新手reanimated
。我现在正在尝试恢复多个项目。
这些项目不会在加载组件开始时显示。但是当按下相应的项目时,他们的项目会显示我的意图。
eg when button 1 is pressed item 1 will pop up slowly, button 2 is pressed and item 2
像那样。
我的应用中有 2 个组件
ItemsList screen
和item component
我在 itemList 屏幕中没有任何动画代码。我只是重新调整项目组件。
{items.map(item => (
<OtherItem
key={item._id}
item={item}
selectedItem={selectedItem}
setSelectedItem={setSelectedItem}
/>
))}
在项目组件内部sharedValue, useEffecthooks, and useState
。我得到了一个用于根据用户交互进行动画处理的组件。
项目组件
const [selected, setSelected] = useState(false);
const [count, setCount] = useState(1);
// Animation
const progress = useSharedValue(0);
const reAnimatedStyle = useAnimatedStyle(() => {
return {
opacity: progress.value,
transform: [{scale: progress.value}],
};
});
useEffect(() => {
progress.value = withTiming(1, {duration: 2000});
}, [selected]);
return (
<TouchableOpacity
onPress={() => selectItem(item)}
style={[
globalStyle.pageContainer,
]}>
{selected && (
<Animated.View
style={[
{flexDirection: 'row', alignItems: 'center'},
reAnimatedStyle,
]}>
...
</Animated.View>
)}
</TouchableOpacity>)
正如你在代码中看到的,我的意图是当用户按下button 1
隐藏的细节时button 1
会显示出来。
但事情只是第一次起作用。我认为是因为shared value
. 我想要的是我希望每个项目都能正常工作。那么任何人都可以提出解决方案吗