Skip to content

Instantly share code, notes, and snippets.

@aleksejkozin
Last active January 13, 2021 20:23
Show Gist options
  • Save aleksejkozin/04e05a23e2f266597ab3aa5cad3a2741 to your computer and use it in GitHub Desktop.
Save aleksejkozin/04e05a23e2f266597ab3aa5cad3a2741 to your computer and use it in GitHub Desktop.
// Browsers.tsx
export function Browsers() {
return <BrowsersList {...useBrowsers('https://google.com/myData.json')} />
}
// useBrowsers.ts
export function useBrowsers(url: string): BrowsersListProps {
const {loading, data} = useFetch<FetchBrowsersResults>(url)
const [selectedBrowser, setSelectedBrowser] = useState<Browser | undefined>(
undefined,
)
return {
loading,
browsers: data?.Browsers,
selectedBrowser,
setSelectedBrowser,
}
}
// BrowsersList.tsx
export function BrowsersList(props: BrowsersListProps) {
const {loading, selectedBrowser, setSelectedBrowser, browsers} = props
return (
<View style={styles.container}>
<AddModal
modalVisible={Boolean(selectedBrowser)}
onClose={() => setSelectedBrowser(undefined)}
description={selectedBrowser?.description}
/>
<UIFriendlyList
loading={loading}
data={browsers}
renderItem={({item}) => (
<BrowserItem
key={item.fullname}
browser={item}
onPress={() => setSelectedBrowser(item)}
/>
)}
/>
</View>
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment