Рубрики
Без рубрики

Как создать калькулятор с помощью React Cloots и API API-контекста RACT

BY THERAN BRIGOWATZ Как построить калькулятор с помощью React Cooks и Aphoto Apiphoto Apiphoto React Crissy Jarvis на Unsplashif вы похожи на меня, когда вы впервые услышали о реактивных крючках, которые вы были, может быть, немного амбивалентны или смущены тем, о чем обман. Что

Автор оригинала: FreeCodeCamp Community Member.

BY THERAN BRIGOWATZ

Если вы подобны мне, когда вы впервые услышали о реактивных крючках, вы были, возможно, немного амбивалентны или смущены тем, о чем обман. Что такое большое значение, если мне больше не нужно писать классные компоненты? Тем не менее, когда-то я готовлюсь и должен использовать их, я не мог видеть, что я вернусь к своему досуду. В бессмертных словах блюза путешественника, «крючок возвращает вас. Я не говорю, ложь.

Некоторое время я искал руководство о том, как использовать крючки в связи с контекстом API. После того, как только найдя несколько примеров, которые полностью объяснили концепцию, я решил сделать то, что должен сделать любой хороший разработчик: поручите над документами и построить что-то сам. Бредитесь через него и изучить его самостоятельно, является одним из лучших способов поглощать знания. Это руководство для того, чтобы построить тот же проект, который я сделал с использованием крючков и контекста.

Обзор

Этот проект будет приложением базового калькулятора, аналогичное калькулятору iPhone. Поскольку это просто простое приложение для рабочего стола, которое я заменил кнопку% с помощью кнопки назад. Хотя я бы не использовал это, чтобы принять SAT, вы могли бы определенно добавить количество пальцев пальцев, которые у вас есть на нем.

Есть работает развернутая версия проекта, или вы можете просматривать весь код на Github Отказ

Проэкт

Начиная

Начать, мы просто собираемся использовать Create-React-App Отказ Вы можете начать работу, выполнив следующее:

npx create-react-app calculatorcd calculatornpm start

Структура файлов и CSS

Структура файла приложения должна выглядеть следующее. В SRC Папка Создайте следующие файлы или просто оставьте App.js и index.js Отказ

src├── App.js├── index.js└── components    ├── BackButton.js    ├── Calculator.js    ├── ClearButton.js    ├── Display.js        ├── EqualButton.js    ├── FunctionButton.js    ├── NegativeButton.js    ├── NumberButton.js    ├── NumberProvider.js    └── styles        └── Styles.js

Если вы хотите выполнить по всему точному, вы также можете установить созданные компоненты для CSS.

NPM -I стиль компоненты

Затем вы можете добавить в стиле CSS из Эта ссылка к Styles.js файл или добавьте свой собственный.

Главная структура приложения

Calculator.js Файл должен настроить панель дисплея и номер. Он должен содержать все типы кнопок.

Вы заметите, что все компоненты кнопок добавляются здесь вместе с цифровым дисплеем. Каждая из компонентов кнопок по существу одинакова. Все они должны следовать той же базовой структуре. Ноль-кнопка Получает отдельный Div Так как мы используем CSS Grid для макета И ему нужно провести два столбца. (PS – если вы хотите узнать больше о CSS Grid, я сделал маленькая статья на основании.)

Вы можете заметить, что ButtonValue реквизит нужен только для NumberButton а также ФункцияButton компоненты. Каждая из кнопок должна следовать той же базовой структуре с уникальным именем. Вы можете ссылаться на структуру файла выше, чтобы увидеть, какие кнопки необходимы. Кнопки должны иметь символ, написанный в компоненте кнопки, если они не передаются ButtonValue через реквизиты. Создайте одно из них для каждого из типов кнопок в вашей файловой структуре.

После этого вы должны иметь основную структуру калькулятора. Мы собираемся вернуться на дисплей чуть немного. Теперь мы собираемся войти в внутреннюю работу приложения и посмотреть, как мы можем использовать наши крючки и контекст.

Создание контекста API Provider

Теперь мы собираемся создать NumberProvider.js Отказ Это сердце вашего приложения и где наши функции будут жить. Если вы никогда не использовали API React Context, это отличный инструмент, который поможет передавать данные из одного компонента к другому.

Подумайте, когда у вас есть компоненты, которые вложены внутри друг друга. В прошлом вам придется «сверлить». Это когда вы передаете данные или функцию, как реквизиты вниз через вложенные компоненты. Это вряд ли идеально, особенно когда вы начинаете идти на несколько слоев глубоко.

Однако с этим компонентом провайдера это позволяет передавать данные в любой вложенный компонент, независимо от того, насколько глубоко. Этот поставщик номеров обернет наш Приложение составная часть. Теперь, когда мы хотим получить данные или использовать функцию, которая живет в провайдере, она доступна в мире. Это вытаскивает нас от необходимости «сверла» через вложенные компоненты. Вы поддерживаете единственный источник правды, который является сущностью реагирования. Чтобы начать, вам нужно создать провайдер. Это должно выглядеть следующее:

Основной провайдер создан и любое значение, которое передается в настоящее время, теперь доступен для всех вложенных компонентов. Для того, чтобы сделать это доступным, мы собираемся обернуть наши Приложение составная часть Так что это в мире доступно. Наше Приложение будет иметь этот код.

Использование контекста

Теперь мы можем добавить в код для нашего дисплея. Мы можем отобразить значение, проходя в упреждающий текст Функция от новых API React Cloots. Мы больше не должны проходить в опоре через вложенные компоненты. Дисплей должен выглядеть как:

Номер, который вы прошли три уровня в NumberProvider сразу доступен для Дисплей Компонент, позвонив упреждающий текст и прохождение наших созданных NumberContext Отказ Ваш цифровой дисплей сейчас работает и работает, как показывает Номер который мы установили на ноль.

Теперь, конечно, наш калькулятор показывает один ноль. Это отлично, если вы считаете количество часов сна, я получаю с новым рожденным сыном, но не так замечательно, если пытаться добавить что-либо еще, поэтому давайте будем использовать некоторые крючки, которые собираются получить этот калькулятор.

Начало работы с крючками

Если вы не использовали крючок раньше, он по существу позволяет избавиться от синтаксиса класса, а вместо этого имейте состояние в функциональных компонентах. Здесь мы можем добавить следующее на наш NumberProvider.js файл для того, чтобы создать наш первый крюк.

Там может быть какой-то синтаксис, который вы не видели. Вместо того, чтобы писать наш класс с государством, мы нарушаем каждую часть государства на свой меньший Номер Переменная. Есть также Сетноморс который действует так же, как SetState Функция, но теперь работает для определенной переменной и может быть вызвана при необходимости. Уместите позволяет нам установить начальное значение.

Теперь мы можем использовать это все в нашей функции, чтобы пройти значения кнопки «Номер» на дисплей. В этом приложении калькулятор использует строки, чтобы получить вход. Есть проверки, чтобы убедиться, что вы не можете иметь несколько Отказ В вашем номере и что у вас нет Zeroes, чтобы начать свой номер.

Создание компонентов кнопки

Теперь вы можете вызвать эту функцию, используя API контекста в любом из вложенных компонентов.

Теперь у вас есть рабочая строка номеров. Вы можете посмотреть, как вы можете начать вводить значения, которые вы устанавливаете в NumberProvider в другие компоненты приложения через упреждающий текст функция. Состояние и функции, которые влияют на его, проводятся в NumberProvider Отказ Вам просто нужно позвонить в конкретный контекст, который вы хотите.

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

Мы можем продолжать добавлять функции на наш калькулятор и передавать их в нужный компонент через упреждающий текст Функция, которая встроена.

Завершенные функции провайдера

Завершено NumberProvider находится ниже и содержит следующие функции, которые используются с крючками.

  • handlesetdisplayvalue Устанавливает значение, которое вы набираете в дисплее. Мы проверяем, что в числовом строке есть только один десятичный десятичный, и мы ограничиваем длину числа до 8 символов. Думайте об этом как о скорее калькуляторе наконечника, чем один, чтобы получить вас через ваш экзамен исчисления. Требуется в ButtonValue Недвижимость в Numberbutton.js Отказ
  • HandlesetStoreValue Занимает нашу строку дисплея и хранит ее, чтобы мы могли ввести другой номер. Это наше хранимое значение. Он будет использоваться в качестве помощника.
  • HandleClearValue. сбрасывает все обратно в 0. Это ваша четкая функция. Это будет передано Clearbutton.js Отказ
  • HandlebackButton Позволяет удалить ваши ранее введенные символы один за раз, пока не вернетесь к 0. Это относится к Backbutton.js файл.
  • handlesetcalcfunction где вы получаете свою математическую функцию. Он устанавливает, если вы добавляете, вычитаете, разделите или умножу. Это передается в Functionbutton.js Файл и берет в ButtonValue имущество.
  • Handletogglenegative делает как имя имени. Это позволяет сделать это для либо значения отображения, либо сохраненного значения после расчета. Это конечно идет в Doverybutton.js Отказ
  • Domath делает математику. Наконец-то. Поскольку это только простой калькулятор для четырех функций, он просто использует простой выключательную функцию в зависимости от FUNCTIONTYPE что у нас в штате. Мы используем Парсент Так как мы проходим наш номер в как строки. Также мы округлив до трех десятичных знаков, чтобы убедиться, что у нас нет сумасшедших длинных номеров.

Готовый дисплей

Вам также понадобится дисплей. В этом случае это покажет Номер и StoredNumber вместе с вашим FUNCTIONTYPE Отказ Есть несколько проверок, такие как отображение 0, когда у вас есть пустая строка в виде номера.

Для краткости Ради я не собираюсь включить все функции кнопки, так как они в значительной степени так же, как Numberbutton.js файл выше. Просто будьте уверены, что вы проходите в ButtonValue при необходимости, и что вы проходите в правильной функции из указанного списка.

Смотрите весь код

Если вы хотите увидеть весь код для этого проекта, он можно найти в:

Github repo.

Кач-u-позже Развертывать

Заключение

Я надеюсь, что это немного очищается о том, как React Cloks и API контекста могут использоваться вместе. Используя эти встроенные функции реагирования, предлагают несколько преимуществ.

  • Простой для понимания синтаксиса и избавляется от беспорядка компонентов классов. Нет больше супер и конструкторов. Всего несколько чистых переменных.
  • Проще установить и использовать состояние внутри и между компонентами. Больше не грязное сверление сквозь несколько компонентов.
  • Устраняет необходимость для Redux в небольших проектах, где вам не нужно слишком много удерживать в сложном состоянии. Вы, вероятно, не собираетесь повторно создать на Facebook с ним, но это сделает работу в небольших приложениях.

Пожалуйста, дайте мне знать свои мысли или если есть какие-либо проблемы, которые вы столкнулись в коде. Надеюсь, это сияло немного света на то, что вы, возможно, не были знакомы раньше. Реагистрационные крючки и контекст – это отличные способы упрощения ваших приложений RACTS и CLEALER PORITE.

Проверьте больше своей работы и других проектов в https://theran.co Отказ

Оригинал: “https://www.freecodecamp.org/news/building-a-calculator-with-react-hooks-and-react-context-api-debcabbc5f54/”