我对JS的react 非常陌生,但我看了一些关于如何建立我自己的投资组合的视频教程.我想映射我的投资组合项目,其中包含一个图像,标题,描述,角色和链接.我设法映射了所有东西,除了指向各自投资组合项目详细页面的链接.

有没有人能帮我弄明白我做错了什么,以及如何解决?

这是我的文件夹 struct :

src => pages保留主页面,src => pages => case-studies保留我的投资组合项目的详细页面.

enter image description here

以下是我到目前为止所得到的信息:

Work.jsx在src=>Pages文件夹中

import React, { useEffect, useState } from "react";
import Loader from "./Loader";
import "./Work.css";
import WorkCard from "./WorkCard";
import WorkData from "./WorkData";

const Work = () => {
  return (
    <div className="work">
      <section className="work-section">
        <div className="card">
          <h1 className="underline">My portfolio</h1>
          <p>Here are the case studies of my projects...</p>

          <div className="grid-layout grid-2">
            {
              WorkData.map((val, index) => {
                return (
                  <WorkCard
                    key={index}
                    url={val.url}
                    image={val.image}
                    name={val.name}
                    description={val.description}
                    role={val.role} />
                 );
              })
            }
          </div>
        </div>
      </section>
    </div>
  );
}

export default Work;

WorkCard.jsx在src=&gt;Pages文件夹中

import React from "react";
import { NavLink } from "react-router-dom";

const WorkCard = (props) => {
  return (
    <NavLink to={props.url} className="tile-card">
      <img src={props.image} alt={props.name} />
      <div className="details">
        <h2>{props.name}</h2>
        <p className="description" title={props.description}>{props.description}</p>
        <h4 className="role" title={props.role}>Role: {props.role}</h4>
      </div>
    </NavLink>
  );
}

export default WorkCard;

WorkData.jsx在src=&gt;Pages文件夹中

import EcoPizza from "../assets/project-icons/ecoPizza.webp";
import Squared from "../assets/project-icons/Squared.webp";
import { EcoPizzaCaseStudy, SquaredCaseStudy } from "./case-studies";

const WorkData = [
  {
    "image": EcoPizza,
    "name": "The UX portfolio item name",
    "description": "This is description part",
    "role": "My role in that project",
    "url": EcoPizzaCaseStudy
  },
  {
    "image": Squared,
    "name": "The UX portfolio item name",
    "description": "This is description part",
    "role": "My role in that project",
    "url": SquaredCaseStudy
  }
];

export default WorkData;

index.js在src=&gt;Pages=&gt; case 研究文件夹中

export { default as EcoPizzaCaseStudy } from "./eco-pizza/EcoPizzaCaseStudy";
export { default as SquaredCaseStudy } from "./squared/SquaredCaseStudy";

App.js

import React from "react";
import { BrowserRouter as Router, Route, Routes } from "react-router-dom";
import { Navigation } from "./components/Navigation";
import { Home, About, Work, Contact, PageNotFound, UnderConstruction } from "./pages";
import { Footer } from "./components/Footer";

function App() {
  return (
    <div className="App">
      <Router>
        <Navigation />
        <main>
          <Routes>
            <Route path="/" element={<Home />} />
            <Route path="/about" element={<About />} />
            <Route path="/work" element={<Work />} />
            <Route path="/under-construction" element={<UnderConstruction />} />
            <Route path="/contact" element={<Contact />} />
            <Route path='*' element={<PageNotFound />}/>
          </Routes>
        </main>
        <Footer />
      </Router>
    </div>
  );
}

export default App;

推荐答案

你错过了路由的整个概念.您不能只使用项目作为指向它的链接.为此,我们使用路由,然后使用相应定义的按路由URL.

因此,您需要用App.js中缺失的项目来填充您的路由:

import React from "react";
import { BrowserRouter as Router, Route, Routes } from "react-router-dom";
import { Navigation } from "./components/Navigation";
import { Home, About, Work, Contact, PageNotFound, UnderConstruction } from "./pages";
import { Footer } from "./components/Footer";
//import required components
import { EcoPizzaCaseStudy, SquaredCaseStudy } from "./case-studies";

function App() {
  return (
    <div className="App">
      <Router>
        <Navigation />
        <main>
          <Routes>
            <Route path="/" element={<Home />} />
            <Route path="/about" element={<About />} />
            <Route path="/work" element={<Work />} />
            <Route path="/under-construction" element={<UnderConstruction />} />
            <Route path="/contact" element={<Contact />} />
            // Add your routes
            <Route path="/eco-pizza-case-study" element={<EcoPizzaCaseStudy/>} />
            <Route path="/squared-case-study" element={<SquaredCaseStudy/>} />
            <Route path='*' element={<PageNotFound />}/>
          </Routes>
        </main>
        <Footer />
      </Router>
    </div>
  );
}

export default App;

然后对于URL使用该定义的路径.

取而代之的是"url": SquaredCaseStudy只做"url": "/squared-case-study"

只要是unique,您 Select 的任何路径都将起作用.您可以将其设置为/study/squared或任何其他值,但需要在App.js中定义它才能使用它

Javascript相关问答推荐

如何修复内容安全策略指令脚本-SRC自身错误?

当promise 在拒绝处理程序被锁定之前被拒绝时,为什么我们会得到未捕获的错误?

Cypress -使用commands.js将数据测试id串在一起失败,但在将它们串在一起时不使用命令有效

GrapeJS -如何保存和加载自定义页面

防止用户在selectizeInput中取消 Select 选项

判断表格单元格中是否存在文本框

如何从html元素创建树 struct ?

在react JS中映射数组对象的嵌套数据

查询参数未在我的Next.js应用路由接口中定义

向数组中的对象添加键而不改变原始变量

Phaserjs-创建带有层纹理的精灵层以自定义外观

未捕获的运行时错误:调度程序为空

如何访问此数组中的值?

用另一个带有类名的div包装元素

为什么在运行于<;img>;事件处理程序中的JavaScript中x和y是不可变的?

如何在每隔2分钟刷新OKTA令牌后停止页面刷新

计算对象数组中属性的滚动增量

REACT-本机错误:错误类型错误:无法读取未定义的容器的属性

在执行console.log(new X())时记录一个字符串

如何格式化API的响应