0

Why this react code print 0 1 not the current values of count and increment

import { useState, useEffect } from 'react';
import { experimental_useEffectEvent as useEffectEvent } from 'react';

export default function Timer() {
  const [count, setCount] = useState(0);
  const [increment, setIncrement] = useState(1);

  const sI=useEffectEvent(()=>{
    return setInterval(() => {
      setCount(c => c + increment);
      console.log(count,increment);
    }, 1000);
  })
  useEffect(() => {
    const id =sI();
    return () => {
      clearInterval(id);
    };
  }, []);

  return (
    <>
      <h1>
        Counter: {count}
        <button onClick={() => setCount(0)}>Reset</button>
      </h1>
      <hr />
      <p>
        Every second, increment by:
        <button disabled={increment === 0} onClick={() => {
          setIncrement(i => i - 1);
        }}>–</button>
        <b>{increment}</b>
        <button onClick={() => {
          setIncrement(i => i + 1);
        }}>+</button>
      </p>
    </>
  );
}

this is an edit on the code of react official doc Seperating events from effects challenge 2 https://react.dev/learn/separating-events-from-effects#challenges

0 Answers0