[HN Gopher] UseHooks - A Collection of Server Component Safe Rea... ___________________________________________________________________ UseHooks - A Collection of Server Component Safe React Hooks Author : benadam11 Score : 88 points Date : 2023-05-30 19:44 UTC (3 hours ago) (HTM) web link (usehooks.com) (TXT) w3m dump (usehooks.com) | paulgb wrote: | Nicely done! | | Dumb question, but as someone who is aware of server components | but hasn't used it, what makes a hook "server component safe"? I | assume it doesn't necessarily mean that you can use it on the | server (e.g. useMouse), but that if you use it it will not break | server-side rendering or complain about a DOM diff? | terandle wrote: | Not a dumb question. I think calling any hooks server component | safe is going to mislead and add confusion to a lot of | developers for this very new tech. Hooks are not allowed in | server components. This library is SSR safe which has been a | concern since before server components were ever a thing. | tylermcginnis wrote: | Yeah it's [poor phrasing](https://twitter.com/tylermcginnis/s | tatus/1663648010558132224) on our part. How it's being | interpreted vs how I thought it would be interpreted are | different. We'll update it. | technion wrote: | I don't blame you for this. The React team recently talking | about "React Server Components" as though most React users | are running it on NodeJS backends and introducing magic | "use client" strings is putting everyone in a confused | position and I don't think there's a good phrasing for you. | stephen123 wrote: | Nice, thank you. It was only the other day I was copy and pasting | from the old site. Looking forward to installing the lib and | deleting some code. | ricardobeat wrote: | How telling is it that a basic core function like useFetch has a | warning that it "depends on React's experimental useEffectEvent"? | | Almost a decade later and simple data fetching is still an | unsolved "problem" in React land. | Vinnl wrote: | The problem of data fetching is basically the problem of | caching, famously one of the two hardest problems in computer | science. | shmde wrote: | Whats the other one ? | toddmatthews wrote: | naming things | whatsdoom wrote: | naming things and off-by-one errors | toddmatthews wrote: | react is a rendering engine, not a framework; there is no | opinionated way to fetch data. | | react-query is a delightful library that has made data | fetching/cacheing a breeze for me - | https://tanstack.com/query/v3/docs/react/overview | ketzo wrote: | It's not "unsolved" - it's just mostly left to the massive | number of third-party data-fetching solutions built _on top of_ | React. | bottlepalm wrote: | How do these compare with the current heavyweight library? | | https://github.com/streamich/react-use | tylermcginnis wrote: | From what I've been able to tell, that lib is unmaintained and | one of the original authors left and created this - | https://github.com/react-hookz/web. | | A lot of older hook libs "break the rules" of React by doing | some weird stuff like silencing useEffects deps array, reading | refs in render, etc. We tried to avoid that so useHooks will be | future proof. | tylermcginnis wrote: | Hi everyone! | | You old heads may remember the original usehooks. It was built | when hooks were first released in 2019. We just rebuilt it from | scratch, added about 40 more hooks, made it compliant with Server | Components, and launched it as a standalone lib. | | Hope you all enjoy! | tuukkah wrote: | I see "MIT" in package.json - could you add a proper license | file to the repo? | tylermcginnis wrote: | Missed that. Thank you. | https://github.com/uidotdev/usehooks/blob/main/LICENSE | benatkin wrote: | Was this inspired at all by VueUse? After the windicss/tailwind | and Remix/Next.js scuffles it's become clear that it's good to | get acknowledgement. | | Either way, I hope it's as well documented and well maintained | as VueUse. That has been pretty sweet. I wanted something like | it for React a few months ago and useHooks was the closest | thing I found but not nearly as good. Hopefully this relaunch | will be. | tylermcginnis wrote: | I've never heard of VueUse (though I'm sure it's great). The | original useHooks was released in January of 2019. | benatkin wrote: | Yeah, I figured useHooks was created without knowing about | VueUse, but thought the useHooks maintainer(s) might have | become aware of it sense then. It makes sense, because | though the code is heading in the direction of VueUse in | terms of being maintained and well rounded, the structure | of useHooks is quite a bit different. VueUse has the code | alongside the Markdown: https://github.com/vueuse/vueuse/tr | ee/main/packages/integrat... | morley wrote: | Are all the hooks on the site made by ui.dev? | | It'd be great if each hook linked to the Github code for that | hook, as the first thing I thought of was (a) what is the hook | doing, and (b) is it easier to adapt my existing hook and | reduce the number of dependencies I have to track? | benadam11 wrote: | https://github.com/uidotdev/usehooks/blob/main/index.js | tylermcginnis wrote: | Good feedback. Yes they're all up on Github - | https://github.com/uidotdev/usehooks | ecuaflo wrote: | I think it's great to have a repo of all the hooks, but I wonder | if implementing each from scratch is the right approach. For | example, there is an exceptional useDebounce package [0] that | handles many more cases than the simplified one on UseHooks, and | I think it could be even more useful to highlight exceptional | work that has already been done and maintained in the community | rather than in-housing everything. I also think there is more | potential in that approach to further React as a whole as the | community converges on agreed-upon utilities that become so | integral to the way people write and discuss code they make it | into the core library. | | [0] https://github.com/xnimorz/use-debounce | tylermcginnis wrote: | That's good feedback. Thank you. | andix wrote: | I don't want to pull in one package for every little piece of | functionality. I prefer a package, that includes a bigger set | of hooks that I can use. For example like date-fns for | date/time. | sattoshi wrote: | I don't understand why this should be distributed as a package of | many hooks. | | Unless if a hook is unusually complicated, I much rather copy- | paste it into my code. | | You should really share the implementations of each of them on | the website. I don't want to pull in 100 hooks just because I | don't want to write 1 from scratch. | tylermcginnis wrote: | Copy/pasting is fine. You do you. | https://github.com/uidotdev/usehooks/blob/main/index.js | sattoshi wrote: | I understand the source is available. I'm saying I would | enjoy seeing the source on the website as I browse it. Much | easier to search up on Google that way. | ipaddr wrote: | You realize that is a website you can browse. Having it on | another domain doesn't make your search easier on google. | technion wrote: | I think that boat has sailed with javascript. I don't | understand why leftpad is a module but much of the community | disagrees with me on that. ___________________________________________________________________ (page generated 2023-05-30 23:00 UTC)