
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
@react-hookful/core
Advanced tools
Useful react hooks that help you clean up you functional components.
Useful react hooks that help you clean up you functional components.
# NPM
npm install @react-hookful/core
# Yarn
yarn add @react-hookful/core
useEffect to run effect on mount.useEffect to run effect on unmount.useEffect to run effect on re-renders, skipping mount.useState but for objects, with state built-in merging.useState but for maps, with built-in setters.useState but for arrays, with built-in useful setters.useMountEffect(effect: EffectCallback): void
Semantic wrapper on React.useEffect.
Runs a given effect only once, on mount (first render).
import { useMountEffect } from '@react-hookful/core';
const Component = () => {
useMountEffect(() => {
/* your side effects here */
});
};
useRerenderEffect(effect: EffectCallback, deps?: any[])
Semantic wrapper on React.useEffect.
Runs the a given effect only on re-renders, skipping mount time.
import { useRerenderEffect } from '@react-hookful/core';
const Component = () => {
useRerenderEffect(() => {
/* your side effect here */
}, [/* dependencies here */]);
};
useUnmountEffect(effect: () => void, deps?: any[])
Semantic wrapper on React.useEffect.
Runs the a given cleanup function on unmount time.
import { useUnmountEffect } from '@react-hookful/core';
const Component = () => {
useUnmountEffect(() => {
/* your cleanup effects here */
}, [/* dependecies here */]);
};
useConstantCallback<T extends GenericFunction<T>>(callback: T): T
Hook that freezes a given callback, so it is only created once in the components life. It ensures the return function is always the same.
Useful for optimizations where otherwise constant functions are recalculated every re-render
Should the callback ever be recalculated see React.useCallback and React.useMemo.
import { useConstantCallback } from '@react-hookful/core';
const Component = () => {
const constantCb = useConstantCallback(() => {
/* some function that doesn't need to be recalculated */
});
};
useObject<T extends object>(initialState: T): [T, StateObjectSetter<T>]
Hook for creating an object with several setters for ease of use. Like state merging and resetting.
StateObjectSetter interfacemerge: <T>(arg: Partial<T>) => void - Merges the current state with the arg object.set: (arg: T | ((currState: T) => T)) => void - State setter, the same you would get with React.useState.reset: () => void - Resets the state back to the initial one.import { useObject } from '@react-hookful/core';
const Component = () => {
const [state, setState] = useObject({ username: 'arumba', password: '123' });
setState.merge({ username: 'fernir' });
console.log(state); // {username: 'fernir', password: '123'}
setState.set({ username: 'something', password: 'password' });
console.log(state); // {username: 'something', password: 'password'}
setState.set(currState => ({ ...currState, username: 'sofi' })); // Same as `.merge`
console.log(state); // {username: 'sofi', password: 'password'}
setState.reset();
console.log(state); // { username: 'arumba', password: '123' }
};
useArray<T>(initialState: T[] | (() => T[])): [T[], ArraySetter<T>]
Hook for creating an array with several setters for ease of use.
ArraySetter interfaceset - Sets the state, the same you would get with React.useState;
append: (element: T) => void - Appends an element to the state
prepend: (element: T) => void - Prepends an element to the state
pop: () => T - Removes and returns the last element from the state
shift: () => T - Removes and returns the first element from the state
concat: (elements: T[]) => void - Concatenates a given array to the state;
transform - Allows you to transform each element of the state, with the same API as Array.prototype.map
filter - Like Array.prototype.filter
reset: () => void - Resets the state back to the initial value
clear: () => void - Sets the state to []
useMap = <K = any, V = any>(initialState: Map<K, V> | (() => Map<K, V>)): [Map<K, V>, MapSetter<K, V>]
Hook for creating an Map with several setters for ease of use.
MapSetter interfaceclear: () => void - Removes all keys from the state.insert: (key: K, value: V) => void - Adds a given key/value pair.remove: (key: K) => void - Adds or updates a given key/value pair.set: Dispatch<SetStateAction<Map<K, V>>> - State setter, the same you would get with React.useState.import { useMap } from '@react-hooks/core';
const Component = () => {
const [map, setMap] = useMap(new Map([['a', 'a'], ['b', 'b']]));
console.log(map); // Map { a → "a", b → "b" }
map.insert('c', 'c');
console.log(map); // Map { a → "a", b → "b", c → "c" }
map.remove('b');
console.log(map); // Map { a → "a", c → "c" }
map.clear() // Map {}
map.set(new Map([['d','d']]));
console.log(map); // Map { d → "d" }
};
useBoolean(initialValue: boolean | (() => boolean)): [boolean, BooleanSetter]
Hook that stores a boolean value, and provides logic for toggling and setting the value.
The return value is a tuple with the value, toggler, and a object with the true and false setters.
BooleanSetter interfaceset: (arg: boolean | () => boolean) => void - Setter similar to that of useStatetoggle: () => void - Toggles the boolean value to its opposite.on: () => void - Sets the value to true.off: () => void - Sets the value to false.import { useBoolean } from '@react-hooks/core';
const Component = () => {
const [isLoading, setIsLoading] = useBoolean(true);
console.log(isLoading); // true
setIsLoading.toggle();
console.log(isLoading); // false
setIsLoading.on();
console.log(isLoading); // true
setIsLoading.off();
console.log(isLoading); // false
setIsLoading.set(true);
console.log(isLoading); // true
};
useNumberSimple hook to keep a numeric state with some useful setters.
NumberSetter interfaceset(value: number | ((prev: number) => number)) => void - Sets the state to a given value.inc(value?: number) => void - Increments the state by a given value. Defaults to 1.dec(value?: number) => void - Decrements the state by a given value. Defaults to 1.times(value: number) => void - Multiplies the state by a given value.divide(value: number) => void - Divides the state by a given value.reset() => void - Resets the state back to its initial value.import { useNumber } from '@react-hookful/core';
const Component = () => {
[value, setValue] = useNumber(0);
setValue.set(100);
console.log(value); // 100
setValue.inc(5);
console.log(value); // 105
setValue.dec(10);
console.log(value); // 95
setValue.inc();
console.log(value); // 96
setValue.reset();
console.log(value); // 0
};
usePrevious<T>(value: T): T | undefined
Keeps track of the previous state of a given variable.
It initializes to undefined.
useConstant<T>(value: T | (() => T)): T)
Keeps a constant state value. It takes an value or a resolver and maintains a reference to it though re-renders.
React.useState can be used as an alternative although it should be less performing since it relies on reducers.
Should the value change based on dependencies consider React.useMemo.
Should the value be a reference to a function consider useFreezedCallback.
import { useConstant } from 'react-hookful';
const Component = () => {
const value = useConstant('my_value');
const valueFromResolver = useConstant(() => 'my_value_from_resolver');
const expensiveValue = useConstant(() => { /* some expensive computation that resolves the value and will run only once*/ });
console.log(value); // my_value
console.log(valueFromResolver); // 'my_value_from_resolver'
};
For more hooks check one of the other sibling packages.
| Package | Version |
|---|---|
| dom |
FAQs
Useful react hooks that help you clean up you functional components.
The npm package @react-hookful/core receives a total of 1 weekly downloads. As such, @react-hookful/core popularity was classified as not popular.
We found that @react-hookful/core demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.