Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. import React from "react";
  2.  
  3. const state = [];
  4. const setters = [];
  5. let cursor = 0;
  6. let isFirstRender = true;
  7.  
  8. function createSetter(cursor) {
  9. return newValue => {
  10. state[cursor] = newValue;
  11. };
  12. }
  13.  
  14. function useState(initalValue) {
  15. if (isFirstRender) {
  16. state.push(initalValue);
  17. setters.push(createSetter(cursor));
  18. }
  19.  
  20. const setter = setters[cursor];
  21. const value = state[cursor];
  22.  
  23. cursor++;
  24. return [value, setter];
  25. }
  26.  
  27. function ButtonUsingHooks() {
  28. const [firstName, setFirstName] = useState("Bar");
  29. const [lastName, setLastName] = useState("Baz");
  30. if (isFirstRender) {
  31. isFirstRender = false;
  32. }
  33.  
  34. return (
  35. <div>
  36. {firstName} {lastName}
  37. <button
  38. onClick={() => {
  39. setFirstName("First");
  40. }}
  41. >
  42. First
  43. </button>
  44. <button onClick={() => setLastName("Last")}>Last</button>
  45. </div>
  46. );
  47. }
  48.  
  49. function App() {
  50. cursor = 0;
  51. return (
  52. <div className="App">
  53. <ButtonUsingHooks />
  54. </div>
  55. );
  56. }
  57.  
  58. export default App;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement