これは私の App.js
import React from "react";
import ReactDOM from "react-dom";
import { Router, Link } from "@reach/router";
import Add from "./components/Add";
import Home from "./components/Home";
import Navbar from "./components/Navbar";
import "./css/styles.css";
const App = () => {
return (
<div>
<Navbar />
<Router>
<Home path="/" />
<Add path="/add" />
</Router>
</div>
);
};
ReactDOM.render(<App />, document.getElementById("root"));
そして、これは私の Navbar.js です
import React from "react";
import Link from "@reach/router";
import "../css/navbar.css";
const Navbar = () => {
return (
<nav className="navbar">
<div className="navitem">
<a href="/">
<h1>Beautiful Places</h1>
</a>
</div>
<div className="navitem">
{" "}
<Link to="/add">
<button className="btn">Add a Place</button>
</Link>
</div>
</nav>
);
};
export default Navbar;
しかし、しかし、私はエラーが発生しています: 要素の型が無効です: 文字列 (組み込みコンポーネントの場合) またはクラス/関数 (複合コンポーネントの場合) が必要ですが、未定義です。コンポーネントが定義されているファイルからコンポーネントをエクスポートするのを忘れている可能性があります。または、デフォルトのインポートと名前付きインポートを混同している可能性があります。
しかし、リンクの代わりにアンカー タグを使用すると、エラーは発生せず、アプリは正常に動作します。この点で助けが必要
しかし、次のように App.js で Navbar コンポーネント全体をコーディングすると。
import React from "react";
import ReactDOM from "react-dom";
import { Router, Link } from "@reach/router";
import Add from "./components/Add";
import Home from "./components/Home";
import "./css/navbar.css";
import "./css/styles.css";
const App = () => {
return (
<div>
<nav className="navbar">
<div className="navitem">
<Link to="/">
<h1>Beautiful Places</h1>
</Link>
</div>
<div className="navitem">
{" "}
<Link to="/add">
<button className="btn">Add a Place</button>
</Link>
</div>
</nav>
<Router>
<Home path="/" />
<Add path="/add" />
</Router>
</div>
);
};
ReactDOM.render(<App />, document.getElementById("root"));
上記の App.js で問題なく動作しています。