react-cheatsheet

This repo is contains some useful opportunities for work with React.js library

View project on GitHub

useRef

[EN]

useRef allows us using refs for functional components.

Let’s looks an example how it works:

import React, {useEffect, useRef} from "react";
import classes from "./Cockpit.module.css";

const Cockpit = (props) => {

    //init ref and set initial value for it
    const btnRef = useRef(null);

    useEffect(()=>{
        //run click after first render
        btnRef.current.click();
    }, []);
    const assignClasses = [];
    if (props.personsLength < 3) {
        assignClasses.push(classes.red);
    }
    if (props.personsLength < 2) {
        assignClasses.push(classes.bold);
    }
    return (
        <React.Fragment>
            <h1>
                {props.title}
            </h1>
            <p className={assignClasses.join(' ')}> And it's work</p>
            <button
                className={classes.button}
                ref={btnRef}
                alt={props.show ? 'show' : undefined}
                onClick={props.clicked}>
                Toggle Persons
            </button>
        </React.Fragment>)
};

export default React.memo(Cockpit);

[RU]

useRef позволяет нам использовать ref’ы в функциональных компонентах.

Давайте рассмотрим пример того, как это работает:

import React, {useEffect, useRef} from "react";
import classes from "./Cockpit.module.css";

const Cockpit = (props) => {

    //инициализируем ref и устанавливаем первоначальное значение для него
    const btnRef = useRef(null);

    useEffect(()=>{
        //запускаем вызвов клика после первой отрисовки
        btnRef.current.click();
    }, []);
    const assignClasses = [];
    if (props.personsLength < 3) {
        assignClasses.push(classes.red);
    }
    if (props.personsLength < 2) {
        assignClasses.push(classes.bold);
    }
    return (
        <React.Fragment>
            <h1>
                {props.title}
            </h1>
            <p className={assignClasses.join(' ')}> And it's work</p>
            <button
                className={classes.button}
                ref={btnRef}
                alt={props.show ? 'show' : undefined}
                onClick={props.clicked}>
                Toggle Persons
            </button>
        </React.Fragment>)
};

export default React.memo(Cockpit);