React.js 上 img 的正确路径

IT技术 javascript reactjs webpack
2021-01-12 09:46:31

我的 React 项目中的图像有一些问题。事实上,我一直认为 src 属性的相对路径是建立在文件架构上的

这是我的文件架构:

components
    file1.jsx
    file2.jsx
    file3.jsx
container
img
js 
... 

但是我意识到路径是建立在 url 上的。在我的一个组件(例如到 file1.jsx)中,我有这个:

localhost/details/2
<img src="../img/myImage.png" /> -> works

localhost/details/2/id
<img src="../img/myImage.png" /> -> doesn't work, images are not displayed

如何解决这个问题?我希望在 react-router 处理的任何形式的路由中,所有图像都可以以相同的路径显示。

6个回答

create-react-app图像的相对路径中似乎不起作用。相反,您可以导入图像:

import logo from './logo.png' // relative path to image 

class Nav extends Component { 
    render() { 
        return ( 
            <img src={logo} alt={"logo"}/> 
        )  
    }
}
不是这个,它只解决图像问题,但不解决路径问题.. Dima Gershman 的回答是任何文件 img 或其他路径的实际反应解决方案
2021-03-14 09:46:31
例如,在 create-react-app 中的 json 文件中引用的动态图像呢?
2021-03-16 09:46:31
import './styles/style.less'; **import logo from './styles/images/deadline.png';** 当图像存在且路径正确时,我在未找到第二行module上遇到错误。
2021-03-19 09:46:31
这种方法也被证实由survive.js如果你想看看核心的WebPack笔者的方法之一。他还提到你可以使用babel-plugin-transform-react-jsx-img-import来避免每次引用图像时都必须导入图像。
2021-04-02 09:46:31
@zok 我想你会从 JSON 文件中导出变量,将变量导入到你的组件中。然后你可以像往常一样引用它。例如 export const my_src = variable_here,从 my_file 导入 {my_src},和 src={my_src}。
2021-04-09 09:46:31

如果您使用 create-react-app 来创建您的项目,那么您的公共文件夹是可以访问的。因此,您需要将image文件夹添加到公用文件夹中。

公开/图片/

<img src="/images/logo.png" />

我正要问一个问题,但这个答案解决了我的问题!!!应标记为答案。谢谢!!!+1
2021-03-18 09:46:31
它对我有用。请记住,如果您将新图像添加到公共目录,则需要重新启动应用程序。
2021-04-05 09:46:31
这确实是处理这种情况的一种快速方法,但只有在您不需要相对 URL 时它才会起作用。例如,如果您在 上提供您的应用程序www.example.com/react-app,则公共文件夹将在 www.example.com 上公开,而没有react-app. 这可能很麻烦,所以接受的答案是正确的。来源:添加资产使用公共文件夹
2021-04-08 09:46:31

您使用的是相对 url,它是相对于当前 url 的,而不是文件系统。您可以通过使用绝对网址来解决此问题

<img src ="http://localhost:3000/details/img/myImage.png" />

但是当您部署到 www.my-domain.bike 或任何其他站点时,这并不是很好。最好使用相对于站点根目录的 url

<img src="/details/img/myImage.png" />

@user1322092 是对的。记住它是/images/popcorn.png而不是./images/popcorn.png为我工作了所有的路线和东西。
2021-03-17 09:46:31
虽然这和 claireablani 的解决方案都有效,但 claireablani 是 create-react-app 文档推荐的。他们列出了将资源放在公共facebook.github.io/create-react-app/docs/...
2021-03-21 09:46:31
/ 将跟随组件 url,不起作用
2021-03-24 09:46:31
谢谢,我会强调/前面的details(vs./details等,对于可能将两者混为一谈的其他人)。
2021-03-25 09:46:31
即使对我来说它也不起作用。我正在reactjseslint一起使用cordovaES5用作 eslint
2021-04-10 09:46:31

随着create-react-app公共文件夹(与index.html的...)。如果你把你的“myImage.png”放在那里,比如在img子文件夹下,那么你可以通过以下方式访问它们:

<img src={window.location.origin + '/img/myImage.png'} />
是的@Maderas 第一件事是这个答案与接受的答案相同 => 只需删除 {} 和基本网址,您可以简单地使用 src='/图像的相对路径' 或 src='图像的绝对路径' 还有更多答案是它可以容纳任何图像的可变路径
2021-03-12 09:46:31
我不明白为什么你认为这是正确的答案。我只是尝试了这个答案,而 Claireblani 的答案和 claire 的答案有效,而这没有。此答案仅适用于图像位于公用文件夹中的情况。我的图像应该放在公共文件夹中吗?@萨米
2021-03-16 09:46:31
到目前为止,对我来说就像一种魅力。其他什么都没做!我尝试了几乎所有的东西。谢谢!
2021-03-22 09:46:31
这应该标记为正确答案,因为它实际上是针对任何文件的所有类型路径的reactjs解决方案
2021-04-05 09:46:31
  1. 在 src(/src/images) 中创建一个图像文件夹并将您的图像保存在其中。然后在您的组件中导入此图像(使用您的相对路径)。如下图——

    import imageSrc from './images/image-name.jpg';

    然后在您的组件中。

    <img title="my-img" src={imageSrc} alt="my-img" />

  2. 另一种方法是将图像保存在公共文件夹中并使用相对路径导入它们。为此,在公共文件夹中创建一个图像文件夹并将您的图像保存在其中。然后在您的组件中使用它,如下所示。

    <img title="my-img" src='/images/my-image.jpg' alt="my-img" />

    两种方法都有效,但推荐第一种方法,因为它更简洁的方式和图像在构建时由 webpack 处理。

这行不通,开头需要一个斜杠 ( / ) 来表示相对路径,例如:“/images/pitbull-mark.png”
2021-03-16 09:46:31
这对我有帮助:)
2021-03-29 09:46:31
您是否尝试过答案中提到的那个?这也应该有效。
2021-04-01 09:46:31
@JeremyRea 开头的斜杠表示绝对路径,而不是相对路径。
2021-04-09 09:46:31