Как в React вызвать функцию в дочернем компоненте?

В родителе есть кнопка button. По нажатию она должна вызывать функцию rotateLeft в дочернем компоненте. Как это сделать?

Родитель:

function App() {

  return (
<div className="App">
<Arrow />
<button onClick={rotateLeft}></button>
</div>
)
}

Ребенок:

import React, {useEffect, useRef, useState} from 'react';
import style from './Arrow.module.scss';
import arrowImg from './img/arrow.png';

const rotateArray = [0,315,270,225,180,135,90,45];
const rotateIndexDefault = 0;
const posXDefault = 1;
const posYDefault = 8;

const Arrow = props => {

    const [rotateIndex, setRotateIndex] = useState(0);
    const arrowRef = useRef();

    useEffect(() => {
        reset();
    }, [])

    useEffect(() => {

        console.log('rotateIndex = ', rotateIndex);
        setRotate(rotateArray[rotateIndex]);
    }, [rotateIndex])

    const setPosition = (x, y) => {

        arrowRef.current.style.left = x * 10 + '%';
        arrowRef.current.style.top = y * 10 + '%';
    }

    const setRotate = (deg) => {

        arrowRef.current.style.transform = 'rotate(' + deg + 'deg)';
    }

    const rotateLeft = () => {

        if (rotateIndex === rotateArray.length - 1) {
            setRotateIndex(0);
        } else {
            setRotateIndex(prev => prev + 1);
        }
    }

    const rotateRight = () => {

        if (rotateIndex === 0) {
            setRotateIndex(rotateArray.length - 1);
        } else {
            setRotateIndex(prev => prev - 1);
        }
    }

    const reset = () => {

        setPosition(posXDefault, posYDefault);
        setRotateIndex(rotateIndexDefault);
    }

    return (
        <img className={style.arrow} alt='стрелка' src={arrowImg} ref={arrowRef}/>
    )
}

export default Arrow;

Ответы (0 шт):