Почему я не могу вызвать хук внутри оболочки, который высмеивает функциональный компонент? - PullRequest
0 голосов
/ 20 января 2020
import { useState } from 'react';

export default () => {
  const [value, setValue] = useState('');

  return {
    value,
    onClick: (event) => {
      setValue(event.target.value);
    },
    reset: () => setValue('')
  };
};

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

https://dev.to/itsjoekent/write-functional-tests-for-react-hooks-4b07

Я пытался использовать упаковщик, но получаю:

import React from 'react';
import { shallow, mount } from 'enzyme';

export default function testHook(runHook, flushEffects = true) {
  function HookWrapper() {
    const output = runHook();

    return (
      <span output={output} />
    );
  }

  const wrapperFunc = flushEffects ? mount : shallow;
  const wrapper = wrapperFunc(<HookWrapper />);

  return wrapper.find('span').props().output;
}

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

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