Недопустимое использование вызова крючка-neo4j

#javascript #reactjs #neo4j #react-hooks

Вопрос:

Недавно я начал создавать приложение react. Я хотел настроить базу данных neo4j, подключенную к приложению. Я решил воспользоваться use-neo4j крючком. Я выполнил основной шаг создания экземпляра драйвера следующим образом:

 import React from "react"; import ReactDOM from "react-dom"; import "./css/index.css"; import App from "./js/App"; import Nav from "./js/Nav"; import { Neo4jProvider, createDriver } from "use-neo4j";  const driver = createDriver("neo4j", "localhost", 7687, "lode", "neo4j");  ReactDOM.render(  lt;React.StrictModegt;  lt;Neo4jProvider driver={driver}gt;  lt;Nav /gt;  lt;App /gt;  lt;/Neo4jProvidergt;  lt;/React.StrictModegt;,  document.getElementById("root") );  

Но в итоге у меня возникла ошибка недопустимого вызова крючка. За исключением случаев, если я удалю Neo4jProvider теги Видно на этом изображении здесь введите описание изображения здесь

Я перепробовал все, что мог, чтобы исправить это, я довольно новичок в React. Я бы хотел, чтобы кто — нибудь помог мне, если сможет.

Ответ №1:

Как и сказано в ошибке, вы можете вызывать крючки только внутри тела функционального компонента. Поэтому я бы, вероятно, создал компонент, который инициирует драйвер и возвращает компонент, который его использует —

 import { Neo4jProvider, createDriver } from "use-neo4j";  const NeoProvider = ({ children }) =gt; {  const driver = createDriver("neo4j", "localhost", 7687, "lode", "neo4j");   return (  lt;Neo4jProvider driver={driver}gt;  {children}  lt;/Neo4jProvidergt;  ); }  

А затем импортируйте это на свой верхний уровень и используйте вместо Neo4jProvider того, что вы импортируете из пакета.

Комментарии:

1. Боюсь, это даст тот же результат, что и я.

2. Я честно думаю, что это проблема с множественной реакцией, но не знаю, как ее исправить

Ответ №2:

Исправлена проблема, у меня было запущено несколько реакций