responsejs TypeError: Object (...) не является функцией при использовании хуков - PullRequest
1 голос
/ 07 июня 2019

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

TypeError: Object (...) не является функцией

когда я удаляю хуки и экспортирую их без каких-либо состояний, это работает.Экспорт того же кода, что и для компонента класса, также работает.

import React,{ useState } from 'react';

const  Mycomponent = () => {
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}

export default Mycomponent;

. Вот как я импортирую и использую функциональный компонент.

import Mycomponent from './mycomponet';
class MYClassComponent extends Component {
  render() {
    return (
      <Mycomponent />
    }
}

Я использую react 16.6.3 и использовал create-react-app.

1 Ответ

2 голосов
/ 07 июня 2019

Я использую реакцию 16.6.3 ...

В этом проблема. Крючки были добавлены в версии 16.8, поэтому useState в вашем коде равно undefined.

(Это один из тех случаев, когда транспарант скрывал от вас ошибку [не то, чтобы у вас был большой выбор, если вам нужно поддерживать более старые среды]. Если бы это было нативное утверждение import, оно бы не сработало с Полезная ошибка, которая говорит о том, что в React не было useState именованного экспорта. Но при использовании версии React для CJS или AMD ваш код преобразуется во что-то, выполняющее var useState = React.useState;, и поэтому он не выдает ошибку, он просто дает вам undefined - это не функция. :-))

...