Как поделиться логикой между компонентами с использованием пользовательских крючков?
Aug 08, 2025
Оставить сообщение
Обмен логикой между компонентами является важным аспектом масштабируемых и поддержанных реагируемых приложений. Как поставщик крючков, я воочию стал свидетелем силы индивидуальных крючков в достижении этой цели. В этом посте я углубится в то, как делиться логикой между компонентами, используя пользовательские крючки, предлагая практические идеи и реальные мировые примеры.
Понимание пользовательских крючков
Прежде чем мы изучим, как поделиться логикой, давайте кратко поймем, что такое пользовательские крючки. Пользовательские крючки - это функции JavaScript, которые начинаются со слова «использовать» и могут вызвать другие крючки. Они позволяют вам извлекать логику компонентов в повторные функции. Например, рассмотрим сценарий, в котором несколько компонентов должны обрабатывать проверку ввода формы. Вместо того, чтобы дублировать логику проверки в каждом компоненте, мы можем создать пользовательский крючок.
Импорт {usEState} от'React '; const useInputValidation = (initialValue = '') => {const [value, setValue] = usEState (initialValue); const [isvalid, setisvalid] = usestate (true); const handlechange = (e) => {const inputValue = e.Target.value; setValue (inputValue); // Пример простой проверки: проверьте, не является ли вход пустым setisvalid (inputvalue.trim ()! == ''); }; return {value, isvalid, handlechange}; }; экспорт по умолчанию использование INPUTVALIDATION;
В этом пользовательском крючке мы инкапсулируем логику управления состоянием и проверки ввода. Любой компонент, который должен обрабатывать проверку ввода, теперь может использовать этот крюк вместо реализации логики с нуля.
Обмен государственной логикой
Одним из основных вариантов использования для пользовательских крючков является разделение логики состояния между компонентами. Государственная логика включает в себя управление состоянием в компоненте. Давайте посмотрим на то, как мы можем поделиться логикой Stateful, используя пользовательские крючки.
Представьте, что у нас есть несколько компонентов, которые должны управлять видимостью модала. Мы можем создать пользовательский крючок для обработки этой логики.
Импорт {usEState} от'React '; const usemodalvisibility = () => {const [iSvisible, setisvisible] = usestate (false); const showmodal = () => {setisvisible (true); }; const hidemodal = () => {setisvisible (false); }; return {isvisible, showmodal, hidemodal}; }; экспорт по умолчанию USEMODALVISICITIONS;
Теперь любой компонент, который должен управлять видимостью модала, может использовать этот пользовательский крючок.
Импорт реагирует от'react '; импортировать usemodalvisibility из './usemodalvisibility'; const modalcomponent = () => {const {iSvisible, showmodal, hidemodal} = usemodalvisibility (); return (<div> <button onclick = {showmodal}> show modal </button> {isvisible && (<div classname = "modal"> <p> Модальный содержимое идет здесь </p> <button Onclick = {hidemodal}> закрыть модальный </button> </div>)} </div>); }; экспорт по умолчанию ModalComponent;
Используя пользовательский крючок, мы успешно поделились логикой состояния в управлении видимостью модала между компонентами.
Сторона обмена - логика эффекта
Пользовательские крючки также отлично подходят для обмена стороной - логика эффекта. Сторона - эффекты включают такие вещи, как извлечение данных, подписки и манипуляции с DOM.
Допустим, у нас есть несколько компонентов, которые должны получить данные из API. Мы можем создать пользовательский крючок для обработки логики извлечения данных.
Import {usEState, useEffect} from'react '; const usedAtafetching = (url) => {const [data, setData] = usEState (null); const [Isloading, setisloading] = usestate (true); const [error, seterror] = usestate (null); Использовать effect (() => {const fetchData = async () => {try {const response = await fetch (url); if (! response.ok) {Throp New Error ('network ответ не был OK');} const result = await response.json (); setData (result);} catch (err) {setError (err); fetchData (); return {data, iSloading, error}; }; экспорт по умолчанию usedAtecteching;
Теперь любой компонент, который должен получить данные из API, может использовать этот пользовательский крюк.
Импорт реагирует от'react '; Импорт применения из './usedatafetching'; const datacomponent = () => {const {data, iSloading, error} = usedAtaFetching ('https://api.example.com/data'); if (iSloading) {return <p> загрузка ... </p>; } if (error) {return <p> error: {error.message} </p>; } return (<div> {data && <pre> {json.stringify (data, null, 2)} </pre>} </div>); }; экспорт DEFALT DATAComponent;
Практические применения в индустрии аксессуаров для ванной
Как поставщик крючков, я понимаю важность практических применений. Например, в индустрии аксессуаров для ванной мы можем использовать пользовательские крючки для управления состоянием списков продуктов.
Допустим, у нас есть компонент, который отображает списокАксессуары для ванной комнаты полотенеци еще один компонент, который отображаетЗолотые крючки для ванной комнатыПолем Мы можем создать пользовательский крючок для управления фильтрацией и сортировкой этих продуктов.


Импорт {usEState} от'React '; const useProductFiltering = (начальные продукты) => {const [продукты, setProducts] = usESTATE (начальные продукты); const [filter, setfilter] = usEState (''); const handlefilterchange = (e) => {const filemvalue = e.target.value; SetFilter (FilterValue); const filemedProducts = initialProducts.filter (product => product.name.tolaycome (). Inclate (FiletRValue.ToloarceCase ())); SetProducts (FiltreedProducts); }; return {продукты, фильтр, handlefilterchange}; }; Экспорт по умолчанию используйте продукцию;
Теперь как крючки для полотенец, так и золотые крючки для ванной комнаты могут использовать этот пользовательский крючок для управления фильтрацией продукта.
Заключение и призыв к действию
В заключение, пользовательские крючки являются мощным инструментом для обмена логикой между компонентами. Они повышают повторную возможность повторного использования кода и делают наши приложения React более масштабируемыми. Как поставщик крючков, я стремлюсь обеспечить высокие - качественные решения для обмена логикой в ваших проектах.
Если вы заинтересованы в том, чтобы узнать больше о том, как наши пользовательские крючки могут принести пользу вашему бизнесу, или если вы хотите начать обсуждение закупок, пожалуйста, не стесняйтесь обратиться. Мы здесь, чтобы помочь вам создать лучшие приложения React с эффективным обменом логикой.
Ссылки
- Реагировать официальную документацию на пользовательских крючках
- «React: up und gun» от Stoyan Stefanov и Eve Porcello
