nextjs-demo
next.js demo using react 19 rc
git clone https://9o.is/git/nextjs-demo.git
useSHEvents.ts
(763B)
1 import { useMemo } from "react"
2 // import { useFetch } from "../../hooks"
3
4 export type SHEvent = {
5 id: string
6 city: string
7 price: number
8 }
9
10 type SHNodeEventId = {
11 id: string
12 }
13
14 export type SHNodeEvent = SHNodeEventId & ({
15 events: SHEvent[]
16 children: []
17 } | {
18 events: []
19 children: SHNodeEvent[]
20 })
21
22 // export function useSHEvents(id: SHNodeEvent['id']) {
23 // const { data, ...rest } = useFetch<SHNodeEvent>(`http://localhost:3000/node-events/${id}`)
24
25 // return {
26 // ...rest,
27 // events: useMemo(() => data ? getEvents(data) : [], [data]),
28 // }
29 // }
30
31 export function getEvents({ events, children }: SHNodeEvent): SHEvent[] {
32 if (events.length > 0) return events
33 return children.flatMap(getEvents)
34 }