返回

javascript-React Dom Routes 未按预期工作,更改路径但页面上没有任何内容

发布时间:2022-05-19 15:50:49 251
# 前端

我正在制作一个使用 OpenLibrary API 的网络平台,我正在从主题中提取数据,然后当您单击主题中的一本书时,我想被带到一个名为“Book”的页面,在其中显示数据。现在我已经设置了我的路线(我认为它们是正确的),但是当我单击列表中的一项时,它什么也没做,它会将 URL 更改为我设置的路线,但它没有不要带我到显示数据的 Book 组件。现在,我还没有发布我的 Book.js 文件,因为它只是包含测试代码以查看我是否可以访问该组件。任何帮助将不胜感激!

以下是我的一些代码片段:

APP.js:

import React, { useState, useEffect } from "react";

import axios from "axios";

import Works from "./components/Works";

import Navbar from "./components/Navbar";

import Footer from "./components/Footer";

import "./styles.css";

function App() {

  const [subjects, setSubjects] = useState([]);

  const [worksDetails, setWorkDetails] = useState([]);

  const [isLoading, setIsLoading] = useState(false);

  const url = "https://openlibrary.org/subjects/animals.json?limit=10";

  useEffect(() => {

    axios

      .get(url)

      .then((response) => {

        setSubjects(response.data);

        setWorkDetails(response.data.works);

        setIsLoading(true);

      })

      .catch((error) => {

        console.log(error);

      });

  }, []);

  if (!isLoading) {

    return <p>Loading...</p>;

  } else {

    return (

      <>

        <Navbar />

        <div className="contentHeader">

          <h1 className="subjectHeader" style={{ padding: "10px" }}>

            Subject: {subjects.name.toUpperCase()}

          </h1>

          <h1 className="workHeader" style={{ padding: "10px" }}>

            Work Count: {subjects.work_count.toLocaleString()}

          </h1>

        </div>

        <div>

          <Works works={worksDetails} />

        </div>

        <Footer />

      </>

    );

  }

}

export default App;

Works.js:

import React from "react";

import { Link } from "react-router-dom";

import Book from "../routes/Book";

 

const Works = (props) => {

  return (

    <div className="container">

      <div>

        <div className="heading">

          {props.works.map((work) => {

            return (

              <Link to={`/book/${work.key}`} element={<Book />} key={work.key}>

                <ul>{work.title}</ul>

              </Link>

            );

          })}

        </div>

      </div>

    </div>

  );

};

 

export default Works;

Index.js:

import { createRoot } from "react-dom/client";

import "./index.css";

import { BrowserRouter, Routes, Route } from "react-router-dom";

import App from "./App";

import Book from "./routes/Book";

const rootElement = document.getElementById("root");

const root = createRoot(rootElement);

root.render(

  <BrowserRouter>

    <Routes>

      <Route path="*" element={<App />} />

      <Route path="/book" element={<Book />}>

        <Route path=":bookId" element={<Book />} />

      </Route>

    </Routes>

  </BrowserRouter>

);

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(2)
按点赞数排序
用户头像