我正在使用带有Rails 5.1.4的webpacker来玩Reactjs,Redux和react-router-dom。
我有一个需要显示图像的导航栏组件,但无法访问assets/images文件夹中的图像,也不能访问文件夹中的图像public。
assets/images
public
我在这 : app/javascript/src/components/navbar
app/javascript/src/components/navbar
我的路线在中定义main.jsx:
main.jsx
<BrowserRouter> <div> <Alert error={error} /> <Navbar user={user}/> <Switch> <Route path="/post/:id" component={PostsShow} /> <Route path="/" component={PostsIndex} /> </Switch> </div> </BrowserRouter>
这是我尝试过的:
<img src="logo.png" alt="Logo" /> <img src="assets/logo.png" alt="Logo" /> <img src="assets/images/logo.png" alt="Logo" />
这3次尝试一次都成功,但是它给了我一个理由,404 (Not Found)因为当路径改变时,它也使我的图像路径也改变了。因此,从根路径开始,我得到了我的图像,因为/assets/images/logo.png它确实存在,但是当我打开时/post/:id,重新加载页面或仅将其着陆到我下面404:
404 (Not Found)
/assets/images/logo.png
/post/:id
404
logo.png:1 GET http://localhost:3000/posts/assets/images/logo.png 404 (Not Found)
你能帮助我吗?还有更多关于您以何种方式处理此类或混合reactjs / rails应用程序中的图像的方法?
谢谢
只需编辑文件config/webpacker.yml并替换以下行:
config/webpacker.yml
resolved_paths: []
与此:
resolved_paths: ['app/assets']
然后,将图像放入app/assets/images文件夹并按如下方式加载:
app/assets/images
import React from 'react' import MyImage from 'images/my_image.svg' const MyComponent = props => <img src={MyImage} /> export default MyComponent