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

React Calculator App

Вот забавный проект, использующий основы React-App для создания функционального калькулятора. Пожалуйста, проверьте PA … Tagged with React, JavaScript, HTML, CSS.

Вот забавный проект, использующий основы React-App для создания функционального калькулятора.

Пожалуйста, проверьте часть 1 на предмет каркасов и стиля, используемых в этом проекте.

Если вы хотите перейти к моему GitHub, клонируйте репо и код вместе с моим учебником.

Нажмите здесь для репо: Dieter-Rams-React-Calc

Хорошо, давайте начнем!

Шаг 1. Кнопки калькулятора

Сначала нам нужно понять наше приложение в компонентах. У пользователя есть три варианта кнопок:

  • цифры и операторы
  • Равно
  • чистый

Компоненты кнопки будут использовать следующий синтаксис для представления кнопки в калькуляторе.

import React, {Component} from 'react';

class Button extends Component {
    render() {
        return(
            

) } } export default Button

Обратите внимание, как this.props.children Учет для дочернего элемента с экспортируемым компонентом. Таким образом, мы можем просто разместить наш номер или операторы в JSX. Handleclick () Позволяет выполнять функцию Handleclick в экспортируемом компоненте.

После того, как вы импортируете свой документ JSX, должен выглядеть так.

CE =

Шаг 2. Функциональность – Решение уравнений

В традиционных приложениях калькулятора жесткие условные утверждения используются для выполнения математических функций или использования Math.js используется для вычислений. Это приложение решит уравнения просто с использованием React Hooks и Json объект для вычислений.

Сначала давайте определим наши крючки:

  const [input, setInput] = useState('');
  const [prevNum, setPrevNum] = useState('');
  const [curNum, setCurNum] = useState('');
  const [operator, setOperator] = useState('');

  useEffect(() => {

// Perform computation

  }, [curNum,operator, prevNum])

Большой! Теперь нам нужен способ установить наши штаты и выполнять расчеты, пока VDOM перепродает. Это означает, что нам нужна функция для каждого случая:

  • Clickbutton
    • Добавьте номер на вход
  • Addzerotoinput
    • setInput только в том случае, если нет нуля
  • Добавить
    • Убедитесь, что только один десятичный
  • Handleclear
    • Очистите все состояние обратно к инициативу ”
  • решать
    • придать ценность
    • Рендерное решение
  • Operation_func
    • Установите оператор, Prevnum и инициализируйте вход

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

Clickbutton
addzero
Добавить
Чисто
решать
Operation_func

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

  const clickButton = (e) => {
      if(e==="+" || e==='-' ||e=== '/' ||e=== '*'){
        setOperator(e)
        console.log(e);
      } else {

        setInput(input + e);
        console.log(input);
      }  

  }
  const handleClear = () =>{
      setInput('');
      setPrevNum('');
      setCurNum('');
      setOperator('');
  }
  const addZeroToInput = (e)=>{
      if(input!==''){
        setInput(input + e);
        console.log(input);
      }
  }
  const addDecimalToInput = (e)=>{
      if(input.indexOf('.')=== -1){
          setInput(input+e)
          console.log(input);
      }
  }
  const solve = () =>{
     setCurNum(input);
  }
  function operation_Func(e) {
        setPrevNum(input);
        setInput('');
        setOperator(e);
    }

Использовать

Наконец, мы должны откуда -то получить наши решения, но избежать петли рендеринга vdom, которая распространена с React. Лучший способ сделать это было бы Использоватьэффект Крюк.

Как только мы узнаем, что оператор был установлен, нам нужен способ передать Prevnum и Curnum в уравнение. Большинство приложений калькулятора будут использовать, если/иначе для выполнения функций, но мы не большинство разработчиков! Используя объект JSON, мы можем реформировать наш процесс выбора в одну строку кода.

Мы должны получить что -то вроде этого:

  useEffect(() => {
    const math_it_Up = {
        '+': function(x,y){return x + y},
        '-': function(x,y){return x - y},
        '*':function(x,y){return x*y},
        '/':function(x,y){return x/y}
    };
    if(curNum !== ''){
        console.log(curNum);
         if(operator !== ''){
         //let solution = Math.floor(parseFloat(prevNum) + parseFloat(curNum));
         let solution = math_it_Up[operator](parseFloat(prevNum),parseFloat(curNum));
         setInput(solution);
         setOperator('');
         setCurNum('');}

    } 
  }, [curNum,operator, prevNum])

Если хотите, вы можете добавить другие уравнения или операции в функцию MATH_IT_UP. Конечный продукт должен выглядеть примерно так.

Следуйте за мной, чтобы узнать больше о прохождении, советах и более крупных проектах с участием стиля React, Node или CSS. Спасибо!

Оригинал: “https://dev.to/uzomezu/react-calculator-app-54ha”