React useTitle Hook

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

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

Введение

В этом практическом занятии мы узнаем, как использовать хук useTitle в React для динамического настройки заголовка веб-страницы. Этот хук полезен при создании веб-приложений, которые требуют динамического изменения заголовка страницы в зависимости от отображаемого контента. В ходе этого практического занятия мы исследуем, как реализовать хук useTitle и использовать его на практическом примере.


Skills Graph

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

Хук useTitle в React

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

Для установки заголовка страницы можно использовать пользовательский хук useTitle. Этот хук использует typeof, чтобы проверить, определено ли Document. Если оно определено, то хук useRef() используется для хранения исходного заголовка Document. Затем хук useEffect() используется для установки Document.title значению, переданному при монтировании компонента, и очистки при демонтировании.

const useTitle = (title) => {
  const documentDefined = typeof document !== "undefined";
  const originalTitle = React.useRef(documentDefined ? document.title : null);

  React.useEffect(() => {
    if (!documentDefined) return;

    if (document.title !== title) {
      document.title = title;
    }

    return () => {
      document.title = originalTitle.current;
    };
  }, [title]);
};

В примера коде компонент Alert использует хук useTitle, чтобы установить заголовок в "Alert". Компонент MyApp отображает кнопку, которая переключает компонент Alert.

const Alert = () => {
  useTitle("Alert");

  return (
    <div>
      <p>Alert! Title has changed</p>
    </div>
  );
};

const MyApp = () => {
  const [alertOpen, setAlertOpen] = React.useState(false);

  return (
    <div>
      <button onClick={() => setAlertOpen(!alertOpen)}>Toggle alert</button>
      {alertOpen && <Alert />}
    </div>
  );
};

ReactDOM.render(<MyApp />, document.getElementById("root"));

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

Резюме

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