Автор оригинала: Eduardo Vedes.
Привет всем! На этот раз я собираюсь рассказать вам об этом Великом Сверхдержание называется «Рендер реквизиты» Отказ
Термин «Рендер опоры» Относится к методике совместного использования кода между компонентами реагирования с использованием опоры, значение которого является функцией.
Концепция также известна как «Дети как функция» или «Ребенок как функция» Отказ Компоненты, которые реализуют этот шаблон, можно назвать «Рендер компоненты оприза» Отказ
Это один из продвинутых моделей в реакции, который должен учитывать в вашей повседневной жизни как программист.
Итак, я надеюсь, что ваш JavaScript в форме, потому что это потрясающий, супер прохладный шаблон для реализации!
Давайте начнем:
Что же мы имеем здесь ?? Давайте декодировать!
У нас есть компонент, который получает детей в виде опоры (он разрушает его от реквизитов) и возвращает его как функцию с аргументами. Здесь дети возвращаются с целым числом 30.
Просто чтобы убедиться, что мы находимся на одной странице, код выше, как написание:
Или в более подробному компоненту класса:
OK! Давайте вернемся туда, откуда мы исходили.
Чтобы вызвать этот компонент, мы пишем функцию как дети:
Хорошо, давайте немного улучшим код.
Я всегда использую немного стайлинга Bootstrap, чтобы сделать мои примеры простыми, чистыми и немного отполированными.
Имейте в виду, что дети – это то, что существует внутри <температуры> вызов.
Температурный компонент полностью прозрачна о том, что детям, он просто делает их прохождения 30 как целое число.
Так что результат, который у нас в браузере, это:
Давайте что-то скажем о погоде! ?
Хорошо! Хорошая особенность, которую вы говорите!
Но почему эта хорошая особенность? Давайте держать свой мозг крутой! ?
Мы отделили контроллер с вида! Теперь у нас есть компонент, называемый температурой, который способен получать температуру от API «далеко» и визуализации своих детей, в зависимости от того, что они будут, передавая их значение TEMP.
Убедитесь, что вы понимаете эту большую выгоду и сверхдержаву! Компонент температуры не знает своих детей заранее. Он только знает, что независимо от детей, которые он окажет их и передает им температуру.
Конечно, мы могли бы использовать композицию и инкапсулировать дети логику в другой компонент, например, Showtemperature в Цельсии.
Давай сделаем это.
Вот и все! Почему это kewl? Потому что теперь я собираюсь повторно использовать то же самое и сделать ShowtemperatureinfaRenheit!
Ага! Это так мило! Мы инкапсулировали материал рендеринга в компоненты с использованием композиции. Мы могли бы продолжать делать новый компонент Showtemperatore, который будет вызвать внутри Showtemperature Iscratchelsius или ShowtemperatureInfaRenheit.
Но если мы захотим применить рисунок рендеринга реквизита еще раз, чтобы показать разные цвета, которые мы получаем от пользовательских предпочтений, например?
Давай попробуем.
Хорошо, друзья, это отличный инструмент, но … »с большой силой приходит большая ответственность».
Если мы сделаем один или два более рендеринга компонентов оприза, мы будем глубоко погружение в обратный звонок, чем мы, возможно, мы могли бы ожидать!
Когда нам нужно что-то извлечь или получить некоторые другие реквизиты, которые приходят в смеси в реакционный каскадный поток, мы собираемся начать запутаться, и код больше станет грязным, а не явным или декларативным.
Итак … Как мы можем избежать этого?
Ну … Может быть, вы уже думали об этом. Рендер реквизиты очень похожи на целей HOC (компоненты более высокого порядка).
На самом деле, мы можем использовать один или другой для почти одинаковой цели. Многие чернила уже потрачены на эту тему.
Если вы ничего не знаете о HOCS, вы можете прочитать мою статью о контейнере здесь Где я покажу вам, как сделать простой HOC.
Я обещаю написать статью о HOCS в ближайшее время, потому что это также образец, который заслуживает некоторого внимания.
Итак, как и тест, давайте развиваться нашу цветную абстракцию в HOC:
Отлично! Тот же результат! Мы сделали функцию JavaScript, которая получает компонент и возвращает класс, который оказывает зарпущенную компанией с желаемым опоры, мы можем получить где-то еще!
Это своего рода глупый пример Но я думаю, что это помогает указать разницу между этими двумя узорами.
Итак … когда вы должны использовать прежний или последний?
Ну, все приходит с стоимостью. Я смею сказать, что нахожу HOC, чтобы быть намного чище, чем рендеринг.
Проблема заключается в том, что HOCS порежут композицию, который мало течет, что делает реагирование настолько велики. Также в некоторых обстоятельствах они не так исполняются, и они, как правило, вызывают больше рендеров в ваших компонентах – так остерегайтесь этой предостережения.
Как правило, я обычно пытаюсь использовать рендеринг реквизиты, потому что это беспроигрышный шаблон, который приоритет приоритеты композиции.
Если вы обнаружите, что вы попадаете в обратный вызов аду, затем переключитесь на HOC в качестве второго шага.
Если вы знаете, например, реагируйте маршрутизатор, вы легко чувствуете, почему Мотер это HOC и <Выключатель/> или <маршрутизатор/> являются рендеринговыми компонентами. Это много зависит, в каком контексте вы работаете, и как вы хотите, чтобы код был выразительным и жидким.
Если вы не знаете React Router, держите все, что я имею в виду. Затем, пока вы пишете какой-то код, попробуйте эти шаблоны, пока вы не решите легко, что лучше согласно контексту или цели.
Последнее, но не менее важное, вы можете играть немного вокруг с кодом в моем репо GitHub здесь Отказ
И это все! ? ? Я надеюсь, что вам понравилось это небольшое введение в рендеринг. Для получения дополнительной информации, пожалуйста, проверьте библиографию ниже!
Библиография
Большое спасибо!
проживает, ноябрь 2018
Оригинал: “https://www.freecodecamp.org/news/how-to-develop-your-react-superpowers-with-the-render-props-pattern-b74e68c6d053/”