Vip*_*pul 14
经过大量搜索,我找到了很多库。但我想在没有任何库的情况下实现它。此外,一些教程展示了如何构建一个,但它们的性能不佳。
最后我就是这样实现的。完整的零食代码在这里:https://snack.expo.dev/@vipulchandra04/a85348
我将isOpen(无论菜单打开还是关闭)存储在state. 然后在按下按钮时更改该状态。我正在使用LayoutAnimationAPI 来React-Native动画列表的打开和关闭。LayoutAnimation本地运行动画,因此它是高性能的。
const Accordion = ({ title, children }) => {
const [isOpen, setIsOpen] = useState(false);
const toggleOpen = () => {
setIsOpen(value => !value);
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);
}
return (
<>
<TouchableOpacity onPress={toggleOpen} activeOpacity={0.6}>
{title}
</TouchableOpacity>
<View style={[styles.list, !isOpen ? styles.hidden : undefined]}>
{children}
</View>
</>
);
};
const styles = StyleSheet.create({
hidden: {
height: 0,
},
list: {
overflow: 'hidden'
},
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6533 次 |
| 最近记录: |