
Security News
Feross on TBPN: How North Korea Hijacked Axios
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.
@react-hookful/core
Advanced tools
Useful react hooks that help you clean up you functional components.
# NPM
npm install @react-hookful/core
# Yarn
yarn add @react-hookful/core
useEffect with
an empty dependencies arrayuseState but for objects, with state built-in merginguseState but for arrays, with built-in useful settersuseEffectOnce(effect: EffectCallback): void
This hook its a simple wrapper of React.useEffect with and empty dependencies array.
It is a way of clearly stating your intentions though semantics.
import { useEffectOnce } from '@react-hookful/core';
const Component = () => {
useEffectOnce(() => {
/* your side effects here */
});
};
useFreezedCallback<T extends GenericFunction<T>>(callback: T): T
Hook that freezed 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 { useFreezedCallback } from '@react-hookful/core';
const Component = () => {
const freezedCb = useFreezedCallback(() => {
/* 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 []
useToggle(initialValue: boolean | (() => boolean)): [boolean, TogglerSetter]
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.
TogglerSetter interfacetoggle: () => void - Toggles the boolean value to its opposite.set: (arg: boolean | () => boolean) => void - Setter similar to that of useStatesetTrue: () => void - Sets the value to true.setFalse: () => void - Sets the value to false.import { useToggle } from '@react-hooks/core';
const Component = () => {
const [isLoading, setIsLoading] = useToggle(true);
console.log(isLoading); // true
setIsLoading.toggle();
console.log(isLoading); // false
setIsLoading.setTrue();
console.log(isLoading); // true
setIsLoading.setFalse();
console.log(isLoading); // false
setIsLoading.set(true);
console.log(isLoading); // true
};
useCounterSimple hook to keep a numeric state with some useful setters.
CounterSetter 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.reset() => void - Resets the state back to its initial value.import { useCounter } from '@react-hookful/core';
const Component = () => {
[value, setValue] = useCounter(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
};
useConstantValue<T>(value: T | (() => T)): (() => T)
Hook to keep a constant state value. It takes an value or a resolver and maintains a reference to it though re-renders.
Returns a getter for state value so it can be lazily set.
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 { useConstantValue } from 'react-hookful';
const Component = () => {
const getValue = useConstantValue('my_value');
const getValueFromResolver = useConstantValue(() => 'my_value_from_resolver');
const getExpensiveValue = useConstantValue(() => { /* some expensive computation that resolves the value and will run only once*/ });
console.log(getValue()); // my_value
console.log(getValueFromResolver()); // '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
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.

Security News
OpenSSF has issued a high-severity advisory warning open source developers of an active Slack-based campaign using impersonation to deliver malware.

Research
/Security News
Malicious packages published to npm, PyPI, Go Modules, crates.io, and Packagist impersonate developer tooling to fetch staged malware, steal credentials and wallets, and enable remote access.