React: math. js похоже, не работает мой калькулятор React (с использованием хуков) и выдает ошибку React # 321 - PullRequest
0 голосов
/ 21 июня 2020

Итак, в основном я пытаюсь создать приложение Calculator с React, используя хуки и для вычисления общего значения, которое я использую math. js библиотеку, однако, похоже, выдает ошибку Minified React # 321, которая выглядит вот так:

Неверный вызов ловушки. Хуки могут быть вызваны только внутри тела функционального компонента. Это может произойти по одной из следующих причин: 1. Возможно, у вас несовпадающие версии React и средства визуализации (например, React DOM) 2. Возможно, вы нарушаете правила хуков 3. У вас может быть более одной копии React в то же приложение [...].

Я не уверен, почему именно это происходит, поскольку функция, в которой у меня есть методы math.compile() и .evaluate(), выводит правильную строку, которая передается в math.compile(). Также, когда я тестировал это в обычном JS файле, я получил правильный результат:

const nums = '3+5*6-2/4'

const code1 = math.compile(nums)
const result = code1.evaluate()
console.log(result) // produces 32.5 as it is supposed to

Но когда следующая функция вызывается в основном компоненте React при нажатии кнопки:

function handleEqual() {
  let totalRow = calcRow.slice(0,)

  if (regex.test(displayNum)) {
    if (displayNum === '-' && regex.test(calcRow[calcRow.length-1])) {
    totalRow = totalRow.slice(0, totalRow.length-1)
    }
  
    totalRow = totalRow.slice(0, totalRow.length-1)
  } else {
    totalRow = totalRow.concat(displayNum)
  }

  console.log(totalRow)

  const total = math.compile(totalRow)
  const result = total.evaluate()
  console.log(result)
  // setCalcRow(totalRow + '=' + result)
  // setDisplayNum(result)
  // setTimeout(() => {
  //   setCalcRow(totalRow + '=' + result)
  //   setDisplayNum(result)
  // }, 500)

  setIsCalculated(true)
}

Я получаю вышеупомянутую ошибку. Почему это происходит и что можно сделать, чтобы исправить эту проблему?

Вот моя ручка со всем кодом проекта на всякий случай.

Заранее спасибо , Константин

изображение ошибки консоли

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...