Кастомные React-Хуки, useToggle, useLocalStorage
ฝัง
- เผยแพร่เมื่อ 1 เม.ย. 2021
- Кастомные хуки в React-приложении позволяют вынести часть логики в отдельные функции для многократного использования. Под капотом, как правило, они используют обычные React-хуки, один или несколько, плюс добавляют к ним определенную функциональность.
▶ Пример из видео: codesandbox.io/s/relaxed-khay...
#react
_
Мои курсы по вебу с купонами:
✅ mishanep.com/
📢 Поддержка канала:
/ mishanep
www.tinkoff.ru/rm/nepomnyasch...
paypal.me/mishanep
Большое спасибо за ваш труд! Всё становится супер понятно после просмотра ваших уроков!
Красивая реализация, доступное и грамотное объяснение. Спасибо!
Отличный видеоролик! Успехов! 🚀🚀🚀
Миша, спасибо) я как раз написал месяц назад хук для работы с lacalstorage, но он не такой изящный получился что ли) взял на вооружение твой пример и очень за это благодарен!
Лучший, спасибо, очень детально и понятно
хвала тебе, мне как раз по заданию из курса надо было localstorage запилить)))) у меня всё котелок не мог сообразить как сделать это, а тут твоё видео)))) всё получилось!!!! огромное спасибо
Спасибо! Очень полезное видео👍
Спасибо тебе добрый человек.
Красота! Спасибо
Спасибо! Помогло ))
Спасибо добрый человек. Первое видео, в котором я понял не много принцип работы кастомных хуков, и как их создавать. И localstorage скорее всего скоро придётся работать. Я джун джуновский, месяц только поработал, стажируюсь.
как дела спустя 2 года? Стало более понятно?)
@@ri4an598 Да, вполне понятно.
@@user-zn7uy9cy6h кем щас работаешь? По скиллам мидл+- уже?)
@@ri4an598 Фронт. По скилам наверное близко к миндлу, но там ещё пахать и пахать)))
@@user-zn7uy9cy6h неееет, я только джун
Очень хороший урок
💣🔥💣 супер!!!
Спасибо!
Какая запоминающаяся фамилия)))
Подскажите пожалуйста, а что означают квадратные скобки в кастомном хуке? " return [value, toggle]; "
Возвращаемое значение это массив, где первым элементом передаётся значение, а вторым - функция.
@@mishanep Спасибо вам!
Супер! Только Вы наверное все же забыли указать ссылку на codesandbox.
Исправился))
А useCallback не нужно использовать для addToOrder?
Это уже вопрос оптимизации. Его надо рассматривать отдельно. В текущем варианте он не требуется.
А в тогле получается то что экспортится и то что используем в аппе никак по названиям не матчися?
Это тема деструктуризации массивов - там имена не важны, только порядок. В случае с деструктуризацией объекта - наоборот.
За счёт чего идёт перерисовка компоненты App..?.. Ведь как я понимаю по клику по бтн просто запускается функция useToggle.. А реакт рендерится когда меняется стейт или родительский компонент
Так useToggle содержит стейт, который меняется при клике. Следовательно и компонент, работающий с этим стейтом, рендерится.
@@mishanep , спасибо за ответ и урок, как всегда топ...До это мне сказали, что кастомный хук нужно называть только с use, поэтому react тогда будет делать рирендер... )
Только начал ТС и возникла проблема с типизацией useToggle, оба значения из картежа обозначает boolean или void. Как исправить?
function useToggle(inititalValue: boolean): [boolean, () => void]
кидаешь в чатгпт он все делает
Спасибо за урок. Единственное толковое объяснение.
сделал я хук для поиска, как у Вас показано. все работает. но потом я решил из него вынести обращение к серверу. сделал хук и для этого, а оно не стало работать, посокльку так нельзя пишет. спросил в телеграме и мне показали фразу в которой написано что хук не может быть вызван из хука. но в другом видео показано что хук вызывается из хука. но там несколько не так сделан обмен переменными. у Вас показано ретурн в квадратных скобках и прием так же. а там показан ретурн в фигурных, прием либо так же, либо просто присваивание переменной из хука. можете ли показать как хук из хука будет вызываться при Вашем способе создания?
Приветствую. Не совсем понимаю суть вопроса. Хук из хука - это, вероятно про реакт хуки, что из коробки идут. Там есть своя логика почему - хуки на верхнем уровне должны вызываться, не в колбеках, ни по условию, ни в цикле. А кастомные хуки чаще всего используют вместе с реакт хуками и часто с другими кастомными хуками. Вернуть же можно что угодно из хука.
@@mishanep спасибо за ответ. по поводу вернуть я уже нашел такое же в других местах. позже еще раз попробую вызвать один хук из другого, как будет время на эксперименты и постараюсь написать что получилось.
Миша почему ты не отвечаешь на комментарии
Разве?
Здравствуйте! Почему в локал сторадж не сохраняет значения после перезагрузки или обновления приложения?
import React, { useEffect, useState } from "react";
import "./styles.css";
export default function App() {
const [radioValue, setRadioValue] = useState("");
useEffect(() => {
window.localStorage.setItem("language", radioValue);
}, [radioValue]);
useEffect(() => {
setRadioValue(JSON.parse(window.localStorage.getItem("radioValue")));
}, []);
function changeHandler(event) {
setRadioValue(event.target.value);
}
return (
Hello!
);
}
Спасибо!