【问题标题】:react-rails asset pipeline image pathreact-rails 资产管道图像路径
【发布时间】:2018-06-30 11:05:33
【问题描述】:

我正在使用 react-rails gem,但我无法弄清楚如何从资产管道加载图像。

我目前使用.js.jsx.erb 扩展来处理这个问题,但据我所知这是非常规的。 (我说的对吗?)

有时我只是使用一个空的 div 并将 div 的 background-image 属性设置为我打算使用的图像。

在使用react-rails 时,加载图像以响应组件的最佳方法是什么?

【问题讨论】:

    标签: ruby-on-rails reactjs asset-pipeline react-rails


    【解决方案1】:

    导入图片的三种方式...

    1) 如果您直接使用jsx.erbjs.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 &gt; javascript &gt; packs &gt; application.js

    import ReactOnRails from "react-on-rails";
    import Exmaple from "<COMPONENT_PATH>/Exmaple";
    
    ReactOnRails.register({
     Exmaple
    }); 
    

    来源:github

    【讨论】:

    • 两种方法我都试过了。目前我正在使用第一种方式,但似乎大多数人不使用jsx.erb。第二种方式是有问题的,因为有时我必须将图像传递几个级别。
    • 我知道如何让它工作。我想知道什么是“最佳实践”。
    • 我认为第三种方式可能会对您有所帮助。我使用了 react-on-rails,你可以相应地使用 react-rails。
    • 自述文件中没有指定,但我尝试了 jsx.erb 并且它适用于 react-rails@2.6.1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 2014-03-08
    相关资源
    最近更新 更多