Введение
В этом практическом занятии мы научимся использовать хук useHash в React для отслеживания и обновления значения хэша адреса в браузере. Этот хук полезен для создания одностраничных приложений, где разные компоненты или разделы страницы отображаются в зависимости от значения хэша. В конце этого практического занятия вы сможете реализовать хук useHash в своих проектах React и улучшить пользовательский опыт ваших веб-приложений.
Хук useHash в React
В ВМ уже предоставлены
index.htmlиscript.js. В общем, вам нужно только добавить код вscript.jsиstyle.css.
Этот код отслеживает и обновляет значение хэша адреса в браузере. Чтобы использовать его, следуйте шагам:
- Используйте хук
useState(), чтобы лениво получить свойствоhashобъектаLocation. - Используйте хук
useCallback(), чтобы создать обработчик, который обновляет состояниеhash, когда событие'hashchange'срабатывает. - Используйте хук
useEffect(), чтобы добавить слушатель для события'hashchange'при монтировании и удалить его при демонтировании. - Используйте хук
useCallback(), чтобы создать функцию, которая обновляет свойствоhashобъектаLocationзаданным значением. - В своем компоненте вызовите
useHash(), чтобы получить текущее значениеhashи функциюupdateHash(), чтобы изменить его. - Используйте функцию
updateHash(), чтобы изменить значениеhash. - Отобразите текущее значение
hashв компоненте. - Создайте поле ввода, которое позволяет пользователю изменить значение
hash.
Вот код:
const useHash = () => {
const [hash, setHash] = React.useState(() => window.location.hash);
const hashChangeHandler = React.useCallback(() => {
setHash(window.location.hash);
}, []);
React.useEffect(() => {
window.addEventListener("hashchange", hashChangeHandler);
return () => {
window.removeEventListener("hashchange", hashChangeHandler);
};
}, []);
const updateHash = React.useCallback(
(newHash) => {
if (newHash !== hash) window.location.hash = newHash;
},
[hash]
);
return [hash, updateHash];
};
const MyApp = () => {
const [hash, setHash] = useHash();
React.useEffect(() => {
setHash("#list");
}, []);
return (
<>
<p>Текущее значение хэша: {hash}</p>
<p>Изменить хэш: </p>
<input value={hash} => setHash(e.target.value)} />
</>
);
};
ReactDOM.createRoot(document.getElementById("root")).render(<MyApp />);
Пожалуйста, нажмите кнопку 'Go Live' в нижнем правом углу, чтобы запустить веб-сервис на порту 8080. Затем вы можете обновить вкладку Web 8080, чтобы просмотреть веб-страницу.
Резюме
Поздравляем! Вы завершили практическое занятие по хукy useHash в React. Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.