score:2

Accepted answer

inside useeffect the callback doesn't change since it's not a dependency. thus, the time inside the subscription callback is always 0.

working solution with rx.js:
settime call is based on prevstate inside callback function.

import react, { usestate, useeffect } from "react";
import { render } from "react-dom";
import "./style.css";

import { interval } from "rxjs";
import { take } from "rxjs/operators";

const inter$ = interval(1000);

function app() {
  const [time, settime] = usestate(0);

  useeffect(() => {
    console.log("hello");
    inter$.subscribe(() => {
      settime(prevtime => prevtime + 1);
      console.log("hella");
    });
  }, []);

  return <div>{time}</div>;
}

render(<app />, document.getelementbyid("root"));

score:1

change settime(time+1); to settime(time=>time+1); heres the full code :

import react, { usestate, useeffect, usecallback } from 'react';
import { render } from 'react-dom';
import './style.css';

import {interval} from 'rxjs'
import { take } from 'rxjs/operators';

const inter$ = interval(1000);

function app(){
  const [time, settime] = usestate(0);
  const callback = usecallback(()=> {
      settime(time=>time+1);
      console.log('hella');
    }, [time])

  useeffect(()=>{
    console.log('hello')
    inter$.subscribe(callback)

  }, [])

  return <div>{time}</div>
}



render(<app />, document.getelementbyid('root'));

stackblitz


Related Query

More Query from same tag