我正在使用react-rails gem,但在弄清楚如何从资产管道加载图像时遇到了麻烦。
我目前使用.js.jsx.erb
扩展名来处理此问题,但据我所知这是非常规的。 (我正确吗?)
有时候,我只是使用一个空的div,并将div的background-image
属性设置为我要使用的图像。
使用react-rails
时加载图像以反应成分的最佳方法是什么?
答案 0 :(得分:2)
有三种导入图像的方法...
1)如果您直接使用jsx.erb
或js.erb
文件...
var image_path = "<%= asset_path(my_image.png) %>"
OR
render: function() {
return (
<img src={"<%= asset_url('path/to/image.png') %>"} />
)
}
2)作为道具通过.erb
文件传递到.js.erb
或.jsx.erb
文件
在您的.erb
文件中
render_component('Component', img_src: image_url('the_path'))
在您的.js.erb
或.jsx.erb
文件中
render: function() {
return (
<img src={this.props.img_src} />
)
}
3)推荐:使用.js
和.jsx
文件并使用视图文件.html.erb
在视图文件example.html.erb
<%= react_component("Example", props: {}, prerender: false) %>
在.jsx
文件Example.jsx
import React, { Component } from "react";
import Image from "<IMAGE_PATH>/image.png";
export default class Example extends Component {
constructor(props, _railsContext) {
super(props);
}
render(){
return(
<div>
<img src={Image} alt="example" />
</div>
)
}
}
您需要注册Example
组件。在您的app > javascript > packs > application.js
import ReactOnRails from "react-on-rails";
import Exmaple from "<COMPONENT_PATH>/Exmaple";
ReactOnRails.register({
Exmaple
});
来源:github