@deion
В React можно обработать браузерную кнопку "Назад" (Back Button) с помощью следующих подходов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import { useHistory } from 'react-router-dom'; function MyComponent() { const history = useHistory(); useEffect(() => { const unlisten = history.listen(() => { // выполнить необходимые действия при нажатии кнопки "Назад" }); return () => { unlisten(); }; }, [history]); return <div>Мой компонент</div>; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import { useEffect } from 'react'; function MyComponent() { useEffect(() => { const handlePopstate = () => { // выполнить необходимые действия при нажатии кнопки "Назад" }; window.addEventListener('popstate', handlePopstate); return () => { window.removeEventListener('popstate', handlePopstate); }; }, []); return <div>Мой компонент</div>; } |
Независимо от того, какой подход вы выберете, обработка нажатия кнопки "Назад" в React может быть довольно простой. Вы можете использовать эти подходы для обработки различных сценариев, таких как переходы между страницами и изменения URL-адреса.
@deion
Теперь Ваша задача написать компонент, который будет отслеживать нажатие кнопки назад в браузере и выполнить определенные действия при этом.
Пример компонента, использующего react-router:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import React, { useEffect } from 'react'; import { useHistory } from 'react-router-dom'; function MyComponent() { const history = useHistory(); useEffect(() => { const handleBackButton = () => { // выполнить необходимые действия при нажатии кнопки "Назад" console.log('Нажата кнопка "Назад"'); }; window.addEventListener('popstate', handleBackButton); return () => { window.removeEventListener('popstate', handleBackButton); }; }, []); return <div>Мой компонент</div>; } export default MyComponent; |
Вы можете добавить свою логику обработки кнопки "Назад" внутри функции handleBackButton
. В примере просто выводится сообщение в консоль.
Пример компонента, использующего window.onpopstate:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import React, { useEffect } from 'react'; function MyComponent() { useEffect(() => { const handleBackButton = () => { // выполнить необходимые действия при нажатии кнопки "Назад" console.log('Нажата кнопка "Назад"'); }; window.onpopstate = handleBackButton; return () => { window.onpopstate = null; }; }, []); return <div>Мой компонент</div>; } export default MyComponent; |
В обоих случаях компонент будет отслеживать нажатие кнопки "Назад" в браузере и выполнит заданные действия при этом.