1/*
2	A common use case is to access a child imperatively: 
3*/
4
5function TextInputWithFocusButton() {
6  const inputEl = useRef(null);
7  const onButtonClick = () => {
8    // `current` points to the mounted text input element
9    inputEl.current.focus();
10  };
11  return (
12    <>
13      <input ref={inputEl} type="text" />
14      <button onClick={onButtonClick}>Focus the input</button>
15    </>
16  );
17}1import React, {useRef, useEffect} from "react";
2
3export default function (props) {
4  // Initialized a hook to hold the reference to the title div.
5  const titleRef = useRef();
6  
7  useEffect(function () {
8    setTimeout(() => {
9      titleRef.current.textContent = "Updated Text"
10    }, 2000); // Update the content of the element after 2seconds 
11  }, []);
12  
13  return <div className="container">
14    {/** The reference to the element happens here **/ }
15    <div className="title" ref={titleRef}>Original title</div>
16  </div>
17}1const initialState = {count: 0};
2
3function reducer(state, action) {
4  switch (action.type) {
5    case 'increment':
6      return {count: state.count + 1};
7    case 'decrement':
8      return {count: state.count - 1};
9    default:
10      throw new Error();
11  }
12}
13
14function Counter() {
15  const [state, dispatch] = useReducer(reducer, initialState);
16  return (
17    <>
18      Count: {state.count}
19      <button onClick={() => dispatch({type: 'decrement'})}>-</button>
20      <button onClick={() => dispatch({type: 'increment'})}>+</button>
21    </>
22  );
23}1import React, { useRef } from 'react';
2
3function TextInputWithFocusButton() {
4  const inputEl = useRef(null);
5  const onButtonClick = () => {
6    // `current` points to the mounted text input element
7    inputEl.current.focus();
8  };
9  return (
10    <>
11      <input ref={inputEl} type="text" />
12      <button onClick={onButtonClick}>Focus the input</button>
13    </>
14  );
15}1import React, { useState, useEffect, useRef } from "react";
2import ReactDOM from "react-dom";
3
4import "./styles.css";
5
6function CountMyRenders() {
7  const countRenderRef = useRef(1);
8
9  useEffect(function afterRender() {
10    countRenderRef.current++;
11  });
12
13  return <div>I've rendered {countRenderRef.current} times</div>;
14}
15
16function App() {
17  const [count, setCount] = useState(0);
18  return (
19    <div className="App">
20      <CountMyRenders />
21      <button onClick={() => setCount(count => count + 1)}>
22        Click to re-render
23      </button>
24    </div>
25  );
26}
27
28const rootElement = document.getElementById("root");
29ReactDOM.render(<App />, rootElement);1import { useRef } from 'react';
2
3function LogButtonClicks() {
4  const countRef = useRef(0);  
5  const handle = () => {
6    countRef.current++;    console.log(`Clicked ${countRef.current} times`);
7  };
8
9  console.log('I rendered!');
10
11  return <button onClick={handle}>Click me</button>;
12}