@dyljhd/use-effect-debugger
v1.2.1
Published
A type-safe React hook for debugging purposes that wraps around the useEffect hook, which returns the dependancies that changed on each iteration of the effect within the console.
Maintainers
Readme
Important!
Do NOT use in production environment!
This package is intended to be a debugging tool only!
Therefore, it should be installed within the devDependancies and all usage removed from the codebase before pushing to a production environment.
Reference
Parameter Explanation
effect: Accepts a function that contains imperative, possibly effectful code.deps: The effect will only activate if the values in the list change.debugOptions: A selection of options to customize debug output within the console.consoleOutput: This changes theconsoleoutput method for the changed deps in the console.consoleName: This changes the debug label outputted with the changed deps in the console.depNames: This gives each of the changed deps in the object a named key instead of defaulting to its index in thedepsarray.
Parameter Types
effect:React.EffectCallbackdeps:React.DependencyListdebugOptionsconsoleOutput:"log" | "table" | undefinedconsoleName:string | undefineddepNames:(string | null)[] | undefined
Extra Details
effectanddepsare no different fromuseEffectarguments.consoleNamedefaults touse-effect-debugger.- You can pass
nullwithin thedepNamesarray if you would like to skip naming a particular key. - On mount, a dep's
prevvalue will always beundefined. - A
consoleOutputoflogoutputs usingconsole.log, andtableoutputs usingconsole.table
Example Usage
Code:
function ExampleComponent() {
const [string, setString] = useState('0');
const [number, setNumber] = useState(0);
useEffectDebugger(
() => {
console.log('useEffect ran');
},
[string, number],
{
consoleName: 'USE-EFFECT-DEBUGGER',
depNames: [null, 'Number'],
}
);
function incrementString() {
setString((prev) => String(Number(prev) + 1));
}
function incrementNumber() {
setNumber((prev) => prev + 1);
}
function incrementAll() {
incrementString();
incrementNumber();
}
return (
<>
<p>String: {string}</p>
<p>Number: {number}</p>
<button onClick={incrementString}>Increment String</button>
<button onClick={incrementNumber}>Increment Number</button>
<button onClick={incrementAll}>Increment All</button>
</>
);
}Console Output:
On mount:
"USE-EFFECT-DEBUGGER" {
0: {
prev: undefined,
cur: "0"
},
Number: {
prev: undefined,
cur: 0
},
}"Increment String" onClick event:
"USE-EFFECT-DEBUGGER" {
0: {
prev: "0",
cur: "1"
}
}"Increment Number" onClick event:
"USE-EFFECT-DEBUGGER" {
Number: {
prev: 0,
cur: 1
}
}"Increment All" onClick event:
"USE-EFFECT-DEBUGGER" {
0: {
prev: "1",
cur: "2"
},
Number: {
prev: 1,
cur: 2
},
}