#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:
Исправлена проблема, у меня было запущено несколько реакций