Реакция хуков в библиотеке реагирования, приводящая к недопустимой ошибке вызова хуков - PullRequest
0 голосов
/ 07 мая 2019

Я создаю библиотеку реагирования, используя https://www.npmjs.com/package/create-react-library, и успешно использовал ее в другом проекте React.Но когда я попытался использовать функциональные возможности реакционных хуков внутри библиотеки, это выдает мне следующую ошибку:

Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
    1. You might have mismatching versions of React and the renderer (such as React DOM)
    2. You might be breaking the Rules of Hooks
    3. You might have more than one copy of React in the same app
.....

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

import React, { useState } from 'react'

const General = (props) => {

    const [count, setCount] = useState(0);
    return (
        <div>
           General component
        </div>
    )
}

export default General

Я использую "react": "^16.8.6" и "react-dom": "^16.8.6"

My React APP Создание приложения с использованием https://github.com/facebook/create-react-app и использование вышеуказанной библиотеки следующим образом.

import Reactfrom 'react'
import { General } from 'my.lib'
const accountSummary = props => {

  return (
    <div>
      <General>
    </div>
  )
}

export default accountSummary

Обе версии имеют одинаковую версию реакции, а библиотека использует те же версии реагирования и реактивной версии, что и peerDependencies

1 Ответ

1 голос
/ 07 мая 2019

Я создал библиотеку React с create-react-library, эта библиотека является вашим General компонентом.Я опубликовал его на npm здесь https://www.npmjs.com/package/stackoverflow-test и приложение React для использования здесь https://codesandbox.io/s/mm7yl83o28.

Просто нажмите на General component текст и count будет увеличен.

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

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