import React, { useCallback, useMemo, useState } from "react"; import { View } from "react-native"; import { Button, Menu, Subheading } from "react-native-paper"; import { ITEM_PADDING } from "./constants"; export interface Item { value: string; label: string; color?: string; } function Select({ value, onChange, items, label, }: { value: string; onChange: (value: string) => void; items: Item[]; label?: string; }) { const [show, setShow] = useState(false); const selected = useMemo( () => items.find((item) => item.value === value) || items[0], [items, value] ); const handlePress = useCallback( (newValue: string) => { onChange(newValue); setShow(false); }, [onChange] ); return ( {label && {label}} setShow(false)} anchor={ } > {items.map((item) => ( handlePress(item.value)} /> ))} ); } export default React.memo(Select);