Ошибка неверного вызова ловушки, но вроде все в порядке - PullRequest
0 голосов
/ 25 мая 2020

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

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

Для проекта с поддержкой React, работающего в сети с поддержкой React, я хочу запустить функцию инициализации в моем компоненте с помощью хука useEffect(). Чтобы получить данные из локальной библиотеки, которую я импортировал с помощью yarn link ( эта библиотека не использует response ).

Как вы можете видеть ниже, мой хук находится в функциональном компоненте:

import React, { useEffect } from 'react';

import Premium from './Premium';

const Widget = () => {

  useEffect(() => {
    init();
  }, []);

  const init = async () => {
    console.log('working');
  };

  return (
    <Premium />
  );
};

export default Widget;

Я также проверял свои версии react и react-dom, как написано здесь и у меня есть только одна копия response / react-dom и react-native.

Конечно, я проверил это двумя разными способами, как указано в официальной документации. (Через npm ls react-native, а также через console.log(window.React1 === window.React2);)

Вот мой пакет. json:

  "scripts": {
    "lint": "./node_modules/.bin/eslint .",
    "test": "./node_modules/.bin/jest"
  },
  "dependencies": {
    "@react-native-community/async-storage": "^1.10.3"
  },
  "devDependencies": {
    "@babel/core": "7.9.6",
    "@poool/eslint-config": "0.0.1-alpha.3",
    "babel-eslint": "10.1.0",
    "babel-jest": "26.0.1",
    "enzyme": "3.11.0",
    "enzyme-adapter-react-16": "1.15.2",
    "eslint": "6.8.0",
    "eslint-config-standard": "14.1.1",
    "eslint-plugin-babel": "5.3.0",
    "eslint-plugin-import": "2.20.2",
    "eslint-plugin-node": "11.1.0",
    "eslint-plugin-promise": "4.2.1",
    "eslint-plugin-react": "7.20.0",
    "eslint-plugin-standard": "4.0.1",
    "jest": "26.0.1",
    "jest-canvas-mock": "1.1.0",
    "metro-react-native-babel-preset": "0.59.0",
    "react": "16.11.0",
    "react-dom": "16.11.0",
    "react-native": "0.62.2",
    "react-native-web": "0.12.2",
    "react-test-renderer": "16.9.0"
  }
}

Всем спасибо! И не стесняйтесь сказать мне, если я сделал что-то не так, для меня это впервые :)

1 Ответ

0 голосов
/ 26 мая 2020

Наконец-то я нашел ответ сам, и я не дал достаточно подробностей о своей проблеме.

Дело в том, что у меня было 2 node_modules:

  • один для моих компонентов (я работаю над библиотекой).
  • один для примера приложения, созданного для запуска моих компонентов через react-native для Интернета.

Для решения моей проблемы Я просто следую https://github.com/facebook/react/issues/13991#issuecomment -435587809 (это я видел 10000 раз), чтобы указать на ту же копию React. И это сработало отлично!

Спасибо за комментарии!

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