Advertisement
Guest User

Untitled

a guest
Jul 18th, 2019
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. const useBar = () => {
  2. const [myFoo, setFoo] = useState(0);
  3. const [myBar, setBar] = useState(0);
  4. useEffect(() => {
  5. setFoo(myFoo + 1);
  6. console.log("setting foo (1)", myFoo, myBar);
  7. }, [setFoo, myFoo, myBar]);
  8. useEffect(() => {
  9. setBar(myBar + 1);
  10. console.log("setting bar (2)", myFoo, myBar);
  11. }, [setBar, myBar, myFoo]);
  12. };
  13.  
  14. import React, { useState, useEffect } from "react";
  15. import ReactDOM from "react-dom";
  16.  
  17. const Bar = () => {
  18. useBar();
  19. return <div>Bar</div>;
  20. };
  21.  
  22. function App() {
  23. return (
  24. <Bar />
  25. );
  26. }
  27.  
  28. const rootElement = document.getElementById("root");
  29. ReactDOM.render(<App />, rootElement);
  30.  
  31. setting foo (1) 1 1
  32. setting bar (2) 1 1
  33. setting foo (1) 2 2
  34. setting bar (2) 2 2
  35. setting foo (1) 3 3
  36. setting bar (2) 3 3
  37. ...
  38.  
  39. describe("Tests", () => {
  40. test("useBar", async () => {
  41. const { rerender } = renderHook(() => {
  42. return useBar();
  43. });
  44.  
  45. // await waitForNextUpdate();
  46. // tried the above doesn't work
  47.  
  48. // rerender();
  49. // with rerender it loops through the next "cycle"
  50. });
  51.  
  52. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement