react-footgun
v0.0.11
Published
The `useFootGun()` hook is designed for testing purposes to simulate a scenario where an asynchronous task gradually increases in complexity, potentially impacting the performance of a React application. It is important to note that deliberately causing p
Downloads
3
Readme
useFootGun()
Hook Documentation
The useFootGun()
hook is designed for testing purposes to simulate a scenario where an asynchronous task gradually increases in complexity, potentially impacting the performance of a React application. It is important to note that deliberately causing poor performance is not a standard practice and should be used cautiously for testing purposes only.
Usage
Import the Hook
import useFootGun from 'react-footgun';
Use the Hook
function App() { const iterations = useFootGun(); // Use the 'iterations' value as needed }
Functionality
The useFootGun()
hook performs the following actions:
- Initializes a state variable
iterations
using theuseState
hook, starting with an initial value of1
. - In the first
useEffect
hook:- Runs a heavy computation task with the current number of iterations.
- Re-runs the computation whenever the
iterations
value changes.
- In the second
useEffect
hook:- Sets up an interval that increases the
iterations
value by 1000 every second. - Cleans up the interval when the component unmounts.
- Sets up an interval that increases the
- In the third
useEffect
hook:- Initializes a
running
flag to control the while loop. - Defines an async function
runLoop()
that runs a while loop with a delay of 1 second between iterations. - Calls the
heavyTask()
function (simulated heavy computation) inside the loop. - Sets the
running
flag tofalse
when the component unmounts, stopping the loop.
- Initializes a
Notes
- This hook is intended for testing purposes and should not be used in production code.
- Deliberately degrading performance is not a recommended practice.
- For accurate performance testing, use browser developer tools or profiling tools.
Disclaimer
The provided code is an example for testing purposes only. It is not recommended to intentionally degrade performance in a production environment.