React useNavigatorOnLine Хук

ReactReactBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы узнаем, как использовать хук useNavigatorOnLine в React для проверки, находится ли клиент в сети или оффлайн. Мы создадим функцию для получения статуса подключения клиента с использованием веб-API Navigator.onLine, используем хук useState() для создания соответствующей переменной состояния и добавим слушатели для соответствующих событий с использованием хука useEffect() для обновления состояния и очистки этих слушателей при демонтировании. Наконец, мы вернем переменную состояния статуса подключения для отображения сообщения в зависимости от текущего статуса подключения.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL react(("React")) -.-> react/StateManagementGroup(["State Management"]) react(("React")) -.-> react/FundamentalsGroup(["Fundamentals"]) react(("React")) -.-> react/AdvancedConceptsGroup(["Advanced Concepts"]) react/FundamentalsGroup -.-> react/jsx("JSX") react/FundamentalsGroup -.-> react/event_handling("Handling Events") react/FundamentalsGroup -.-> react/conditional_render("Conditional Rendering") react/AdvancedConceptsGroup -.-> react/hooks("React Hooks") react/StateManagementGroup -.-> react/use_state_reducer("Using useState and useReducer") subgraph Lab Skills react/jsx -.-> lab-38398{{"React useNavigatorOnLine Хук"}} react/event_handling -.-> lab-38398{{"React useNavigatorOnLine Хук"}} react/conditional_render -.-> lab-38398{{"React useNavigatorOnLine Хук"}} react/hooks -.-> lab-38398{{"React useNavigatorOnLine Хук"}} react/use_state_reducer -.-> lab-38398{{"React useNavigatorOnLine Хук"}} end

Хук useNavigatorOnLine в React

В ВМ уже предоставлены index.html и script.js. В общем, вам нужно только добавить код в script.js и style.css.

Для проверки, находится ли клиент в сети или оффлайн, вы можете создать функцию getOnLineStatus, которая использует веб-API Navigator.onLine. Затем, чтобы реализовать эту функциональность в компоненте React, вы можете использовать пользовательский хук useNavigatorOnLine. Этот хук создает переменную состояния под названием status с использованием хука useState() и устанавливает ее в значение, возвращаемое функцией getOnLineStatus(). Хук useEffect() используется для добавления слушателей событий при изменении статуса подключения/отключения, обновления переменной состояния status в соответствии и очистки этих слушателей при демонтировании компонента. Наконец, переменная isOnline, возвращаемая функцией useNavigatorOnLine(), может быть использована для отображения сообщения о том, находится ли клиент в сети или оффлайн.

const getOnLineStatus = () =>
  typeof navigator !== "undefined" && typeof navigator.onLine === "boolean"
    ? navigator.onLine
    : true;

const useNavigatorOnLine = () => {
  const [status, setStatus] = React.useState(getOnLineStatus());

  const setOnline = () => setStatus(true);
  const setOffline = () => setStatus(false);

  React.useEffect(() => {
    window.addEventListener("online", setOnline);
    window.addEventListener("offline", setOffline);

    return () => {
      window.removeEventListener("online", setOnline);
      window.removeEventListener("offline", setOffline);
    };
  }, []);

  return status;
};

const StatusIndicator = () => {
  const isOnline = useNavigatorOnLine();

  return <span>You are {isOnline ? "online" : "offline"}.</span>;
};

ReactDOM.createRoot(document.getElementById("root")).render(
  <StatusIndicator />
);

Пожалуйста, нажмите кнопку 'Go Live' в нижнем правом углу, чтобы запустить веб-сервис на порту 8080. Затем вы можете обновить вкладку Web 8080, чтобы просмотреть веб-страницу.

Резюме

Поздравляем! Вы завершили практическое занятие по хукy useNavigatorOnLine в React. Вы можете попробовать еще несколько практических занятий в LabEx, чтобы улучшить свои навыки.