stateful-hooks v1.0.1
Give your react hooks state on the server side
š Homepage
Usage
This is a drop-in module that will modifiy React hooks SSR behaviour.
Use as a preloaoder
node -r stateful-hooks my-app.jsOr react in the entry point before requiring react:
require('stateful-hooks')
const React = require('react')Install
npm installRun tests
npm testStateful Hooks
The following hooks retain state on the server side when stateful-hooks has been applied:
- useState - persists state across requests
- useReducer - persists state across requests
- useMemo - persists memoization across requests
- useCallback - persists memoization across requests
- useContext - supplies context state during ssr
- useRef - returns
{current: input}instead ofundefined - useEffect - can be enabled on a case by case basis by setting
useEffect.ssrto true. In SSR mode use effect is called during rendering.
Server-side useEffect
useEffect is a client-side only hook, however we can opt in to making the useEffect call into a server-side hook by setting useEffect.ssr = true right before it is called:
import { useEffect } from 'react'
const MyComponent = () => {
const [ state, update ] = useState(0)
useEffect.ssr = true
useEffect(() => {
update(1) // this will be called server side
})
useEffect(() => {
update(2) // this will NOT be called server side
})
}Avoiding server state
In the event that server state is unwanted in a particular context, ensure the update function is called within useEffect (without setting useEffect.ssr to true) so that it's client side only.
Author
š¤ David Mark Clements
- Twitter: @davidmarkclem
- Github: @davidmarkclements
š¤ Contributing
Contributions, issues and feature requests are welcome!Feel free to check issues page.
Show your support
Give a āļø if this project helped you!
š License
Copyright Ā© 2020 David Mark Clements. This project is MIT licensed.
This README was generated with ā¤ļø by readme-md-generator