Итак, в основном я пытаюсь создать приложение 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)
}
Я получаю вышеупомянутую ошибку. Почему это происходит и что можно сделать, чтобы исправить эту проблему?
Вот моя ручка со всем кодом проекта на всякий случай.
Заранее спасибо , Константин
изображение ошибки консоли