React Base Fiddle (JSX)

Starting point for creating JSFiddles with React.

by nidu

HTML

<script src="https://unpkg.com/[email protected]/umd/react.development.js"></script>
<script src="https://unpkg.com/[email protected]/umd/react-dom.development.js"></script>
<div id="container">
    <!-- This element's contents will be replaced with your component. -->
</div>

Babel + JSX

/* import {useState} from 'react'; */

function CounterViaRef() {
  const counterRef = React.useRef(0);
  
  React.useEffect(() => {
  	const k = setInterval(() => {
      counterRef.current += 1;
    }, 1000);
    return () => clearInterval(k);
  }, []);
	
	return (
  	<div>Counter via ref: {counterRef.current}</div>
  );
}

function CounterViaState() {
	const [counter, setCounter] = React.useState(0);
  
  React.useEffect(() => {
  	const k = setInterval(() => {
	  	setCounter(counter + 1);
    }, 1000);
    return () => clearInterval(k);
  }, []);
	
	return (
  	<div>Counter via state: {counter}<br/></div>
  );
}

function CounterViaBoth() {
	const [counter, setCounter] = React.useState(0);
  const counterRef = React.useRef(0);
  
  React.useEffect(() => {
  	const k = setInterval(() => {
	  	setCounter(counterRef.current + 1);
      counterRef.current += 1;
    }, 1000);
    return () => clearInterval(k);
  }, []);
	
	return (
  	<div>Counter via both: {counter}</div>
  );
}

function Hello() {
	return (
  	<div>
      Should increase every second<br/>
      <CounterViaState />
      <CounterViaRef />
      <CounterViaBoth />
    </div>
  );
}

ReactDOM.render(
  <Hello name="World" />,
  document.getElementById('container')
);