gpt4 book ai didi

javascript - React 组件中的图像加载在一个页面上而不是另一页上?

转载 作者:行者123 更新时间:2023-12-05 02:54:44 25 4
gpt4 key购买 nike

大家好,非常简单的问题。我有一个主页和一个房间页面。 问题是为什么导航栏组件中的logo图片在首页加载,而在房间页面加载不出来?

首页如下:

import React from 'react';
import Hero from '../components/hero.js';
import NavBar from '../components/navbar.js';
import Services from '../components/services.js';
import FeaturedRooms from '../components/featuredRooms.js';
import Consultation from '../components/consultation.js';
import Footer from '../components/footer.js';

const Home = () => {
return (
<React.Fragment>
<NavBar/>
<Hero/>
<Services/>
<FeaturedRooms/>
<Consultation/>
<Footer/>
</React.Fragment>
);
}

export default Home;

房间页面现在是基本的,只有:

import React from 'react';
import NavBar from '../components/navbar';
import Footer from '../components/footer';

const RoomPage = () => {
return (
<React.Fragment>
<NavBar/>
<Footer/>
</React.Fragment>
);
}

export default RoomPage;

Logo 图像的路径是 public/images/logo.png。我将带有 src="images/logo.png"的 Logo 作为 img 的样式组件导入到我的导航栏组件中。

首页和房间页面都在同一个文件夹下:src/pages/home.js和src/pages/singleRoom.js

导航栏在组件文件夹中如下:src/components/navbar.js

这是 navbar.js 代码:

import React from 'react';
import styled from 'styled-components';
import {Link} from 'react-router-dom';
import {LinkWithNoStyling} from './shared';

const Header = styled.header`
display: flex;
justify-content: flex-end;
padding: 10px 10%;
box-sizing: border-box;
background-color: rgb(251, 251, 251);
`;

const Logo = styled.img`
height: 30px;
/* explanation: margins top and bottom for flex child center vertically, given a margin right of auto and left of 0 we make it stick to the left. */
margin: auto auto auto 0;
`;

const UnorderedList = styled.ul`
list-style: none;
display: flex;
`;


const ListItem = styled.li`
margin-left: 35px;
`;

const MenuAnchor = styled.a`
text-decoration: none;
font-size: 1rem;
font-weight: bold;
color: black;

&:hover {
color: rgb(161, 113, 1);
}
`;

const Navbar = () => {
return (
<Header>
<Logo src="images/logo.png"/>
<nav>
<UnorderedList>
<ListItem>
<LinkWithNoStyling to="/">
<MenuAnchor href="">Home</MenuAnchor>
</LinkWithNoStyling>
</ListItem>
<ListItem>
<LinkWithNoStyling to="/rooms">
<MenuAnchor href="">Rooms</MenuAnchor>
</LinkWithNoStyling>
</ListItem>
</UnorderedList>
</nav>
</Header>
);
}

export default Navbar;

最后,这是 App.js 代码:

import React from 'react';
import './App.css';
import {BrowserRouter, Switch, Route} from 'react-router-dom';
import Home from './pages/home';
import NotFound from './pages/notFound';
import Rooms from './pages/rooms';
import RoomPage from './pages/roomPage'

function App() {
return (
<div className="App">
<BrowserRouter>
<Switch>
<Route path="/" component={Home} exact/>
<Route path="/rooms" component={Rooms} exact/>
<Route path="/room/:id" component={RoomPage} exact/>
<Route path="/" component={NotFound}/>
</Switch>
</BrowserRouter>
</div>
);
}

export default App;

最佳答案

您正在为 src 使用相对 URL Logo 上的属性零件。 images/logo.png指向相对于当前路径,因此对于您的主页,它指向 <url>/images/logo.png , 但对于您的房间页面,它指向 <url>/room/:id/images/logo.png .如果您更改 src/images/logo.png , 那么它将始终指向正确的文件。有关 html 文件路径的更多信息,请查看 here .

关于javascript - React 组件中的图像加载在一个页面上而不是另一页上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61690406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com