React-bootstrap Navbar 品牌徽标未呈现
React-bootstrap Navbar Brand logo not rendering
我正在尝试使用 React bootstrap 在我的 React 应用程序上创建一个与导航栏一起使用的徽标,并且我已经使用了 documentation as a guide。但是,当使用localhost://3000查看页面时,显示如下:
我做错了什么?我什至尝试将示例代码片段从文档站点复制到我的项目中,并且呈现相同的内容。但是,我打开 svg 文件时 Chrome 本身没有任何问题。这是我的 App.js:
代码
import React from 'react';
import './App.css';
import {
BrowserRouter as Router,
Switch,
Route,
Link
} from "react-router-dom";
import Container from 'react-bootstrap/Container'
import Navbar from 'react-bootstrap/Navbar';
import Nav from 'react-bootstrap/Nav';
class App extends React.Component {
constructor(props) {
super();
this.state = {
title: "Danny's Website",
headerLinks: [
{ title: 'Home', path: '/' },
{ title: 'Projects', path: '/projects' },
{ title: 'Documents', path: '/documents' },
{ title: 'Contact Me', path: '/contact' }
],
home: {
title: 'Hey there!',
subtitle: 'Welcome to my personal website.',
text: 'Placeholder text for now',
},
projects: {
title: 'My Projects',
subtitle: "From app development to tinkering with robots, I've tried it all",
},
documents: {
title: 'So you wanna see my deets, huh?',
},
contact: {
title: "Let's get in touch",
}
}
}
render() {
return (
<Router>
<Container fluid={true} className='p-0'> { /*Fluid false = Huge left margin. Change padding via "className='p-0'" */}
<Navbar expand="lg" bg="light" variant="light" className="border-bottom">
<Navbar.Brand href="#home" >
<img
alt=""
src="/bootstrap-solid.png"
width="30px"
height="30px"
className="d-inline-block align-top"/>{' '}
Home Site
</Navbar.Brand>
<Navbar.Toggle className="border-0" aria-controls="navbar-toggle" />
<Navbar.Collapse id="navbar-toggle">
<Nav className="ml-auto">
<Link className="nav-link" to="/">Home</Link>
<Link className="nav-link" to="/projects">Projects</Link>
<Link className="nav-link" to="/documents">Documents</Link>
<Link className="nav-link" to="/contact">Contact Me</Link>
</Nav>
</Navbar.Collapse>
</Navbar>
</Container>
</Router>
);
}
}
export default App;
网友RK_oo7在评论区的回答是正确的。徽标在源代码中的引用是正确的,但徽标应位于 public 文件夹而不是 src.
import Logo from '../../images/telcomlogo.jpg'; // src/images
<Navbar.Brand >
<Link to="/home">
<img width="70px" height="auto" className="img-responsive" src={Logo} alt="logo" />
</Link>
</Navbar.Brand>
因为您使用 react-bootstrap,并且 react-bootstrap 文档说,“任何时候您需要显示一段内容,例如带有可选标题的图像,请考虑使用图形。”
所以也许在你的情况下你可以先导入图像文件并根据需要用别名命名...
import imagenameasyouwant from '../../assets/img//bootstrap-solid.png';
然后你可以在“图中”中随意调用图像名称
<Figure><Figure.Image width={100} height={50} alt="100x50" src={imagenameasyouwant} /></Figure>
有关 react-bootstrap 图的完整文档,您可以在 react-bootstrap documentation about figure
找到
遇到了同样的问题,但是通过添加import语句并在img的src属性中引用它就解决了。
即使没有图也能正常工作。
我正在尝试使用 React bootstrap 在我的 React 应用程序上创建一个与导航栏一起使用的徽标,并且我已经使用了 documentation as a guide。但是,当使用localhost://3000查看页面时,显示如下:
我做错了什么?我什至尝试将示例代码片段从文档站点复制到我的项目中,并且呈现相同的内容。但是,我打开 svg 文件时 Chrome 本身没有任何问题。这是我的 App.js:
代码import React from 'react';
import './App.css';
import {
BrowserRouter as Router,
Switch,
Route,
Link
} from "react-router-dom";
import Container from 'react-bootstrap/Container'
import Navbar from 'react-bootstrap/Navbar';
import Nav from 'react-bootstrap/Nav';
class App extends React.Component {
constructor(props) {
super();
this.state = {
title: "Danny's Website",
headerLinks: [
{ title: 'Home', path: '/' },
{ title: 'Projects', path: '/projects' },
{ title: 'Documents', path: '/documents' },
{ title: 'Contact Me', path: '/contact' }
],
home: {
title: 'Hey there!',
subtitle: 'Welcome to my personal website.',
text: 'Placeholder text for now',
},
projects: {
title: 'My Projects',
subtitle: "From app development to tinkering with robots, I've tried it all",
},
documents: {
title: 'So you wanna see my deets, huh?',
},
contact: {
title: "Let's get in touch",
}
}
}
render() {
return (
<Router>
<Container fluid={true} className='p-0'> { /*Fluid false = Huge left margin. Change padding via "className='p-0'" */}
<Navbar expand="lg" bg="light" variant="light" className="border-bottom">
<Navbar.Brand href="#home" >
<img
alt=""
src="/bootstrap-solid.png"
width="30px"
height="30px"
className="d-inline-block align-top"/>{' '}
Home Site
</Navbar.Brand>
<Navbar.Toggle className="border-0" aria-controls="navbar-toggle" />
<Navbar.Collapse id="navbar-toggle">
<Nav className="ml-auto">
<Link className="nav-link" to="/">Home</Link>
<Link className="nav-link" to="/projects">Projects</Link>
<Link className="nav-link" to="/documents">Documents</Link>
<Link className="nav-link" to="/contact">Contact Me</Link>
</Nav>
</Navbar.Collapse>
</Navbar>
</Container>
</Router>
);
}
}
export default App;
网友RK_oo7在评论区的回答是正确的。徽标在源代码中的引用是正确的,但徽标应位于 public 文件夹而不是 src.
import Logo from '../../images/telcomlogo.jpg'; // src/images
<Navbar.Brand >
<Link to="/home">
<img width="70px" height="auto" className="img-responsive" src={Logo} alt="logo" />
</Link>
</Navbar.Brand>
因为您使用 react-bootstrap,并且 react-bootstrap 文档说,“任何时候您需要显示一段内容,例如带有可选标题的图像,请考虑使用图形。”
所以也许在你的情况下你可以先导入图像文件并根据需要用别名命名...
import imagenameasyouwant from '../../assets/img//bootstrap-solid.png';
然后你可以在“图中”中随意调用图像名称
<Figure><Figure.Image width={100} height={50} alt="100x50" src={imagenameasyouwant} /></Figure>
有关 react-bootstrap 图的完整文档,您可以在 react-bootstrap documentation about figure
找到遇到了同样的问题,但是通过添加import语句并在img的src属性中引用它就解决了。
即使没有图也能正常工作。