use-smartvalue
Version:
A custom React hook to manage values with either useState or useRef.
92 lines (67 loc) • 2.61 kB
Markdown
# useSmartValue
A custom React hook to manage values with either `useState` or `useRef`, providing a consistent API for getting, setting, and retrieving the initial value, as well as resetting to the initial value.
## Installation
```bash
npm i use-smartvalue
```
or
```bash
yarn add use-smartvalue
```
or
```bash
pnpm add use-smartvalue
```
## Features
- Use either `useState` or `useRef` to manage your values based on your preference.
- Provides a consistent API for getting, setting, and retrieving the initial value.
- Ability to reset the value to its initial state.
- Ability to get the previous value.
- Lightweight and easy to integrate into any React project.
- Exported type `SmartValue` for type-safe usage.
## Usage
If you want to use `useRef` instead of `useState`, you can pass it as an option:
```tsx
function App() {
const value = useSmartValue({ initialValue: 0 })
const refValue = useSmartValue({ initialValue: 0, useRef: true })
return (
<div>
<button
onClick={() => {
value.set(value.get() + 1)
refValue.set(refValue.get() + 5)
}}>
Increment
</button>
<button onClick={() => value.reset()}>Reset</button>
<button onClick={() => refValue.reset()}>
Reset Ref (does not cause a re-render)
</button>
<p>Value: {value.get()}</p>
<p>Previous Value: {value.getPrevious()}</p>
<p>Ref Value: {refValue.get()}</p>
<p>Previous Ref Value: {refValue.getPrevious()}</p>
<p>Initial Value: {value.getInitial()}</p>
<p>Initial Ref Value: {refValue.getInitial()}</p>
</div>
)
}
```
## API
### `useSmartValue(options)`
- `options`: An object with the following properties:
- `initialValue`: The initial value you want to set.
- `useRef`: A boolean to determine if you want to use `useRef` instead of `useState`. Default is `false`.
Returns an object of type `SmartValue` with the following methods:
- `get()`: Returns the current value.
- `set(value)`: Sets the new value. Can accept a direct value or a function that receives the previous value and returns the new value.
- `getInitial()`: Returns the initial value set at the beginning.
- `reset()`: Resets the value to the initial value.
- `getPrevious()`: Retrieves the previous value.
### `SmartValue`
A type that describes the return value of the `useSmartValue` hook. It provides type-safe access to the hook's methods.
## Contributing
If you find any issues or have suggestions, please [open an issue](https://github.com/DevOsamaIslam/use-smartvalue/issues) on GitHub.
## License
MIT