Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/iamthesiz/urs

useRefState, for getting correct values even when in callback functions, and blocking state updates on unmounted components
https://github.com/iamthesiz/urs

Last synced: 1 day ago
JSON representation

useRefState, for getting correct values even when in callback functions, and blocking state updates on unmounted components

Awesome Lists containing this project

README

        

useRefState


🔥 React hook for maintaining correct values, in a clean way, without updates on unmounted components










undefined








Features
--------

- TypeScript support
- Zero dependencies
- React Native support
- Keep your state consistant within your callback functions

Installation
------------

```shell
yarn add urs or npm i -S urs
```

Usage
-----

```jsx
import useRefState from 'urs'
import { useState } from 'react'

const App = () => {
const [loadingRef, setLoadingRef] = useRefState(false)
const [loadingState, setLoadingState] = useState(false)

// DO NOT destructure like this
const [{ current }] = useRefState()

const onClick = () => {
setLoadingRef(true)
console.log('loadingRef.current', loadingRef.current) // gives us `true`
setLoadingState(true)
console.log('loadingState', loadingState) // gives us `false`
}

return (
Click Me!
)
}
```

Options
-------

The 2nd argument of `useRefState` determines if you want to be able to update state when a component
is unmounted. If `true` it will block setState on unmounted components. Useful for the common error `cannot update state on unmounted component`.

```js
const [state, setState] = useRefState('same as useState default state', true)
```