【问题标题】:React + Redux +Rails and webpack without gem没有 gem 的 React + Redux +Rails 和 webpack
【发布时间】:2017-02-23 11:23:49
【问题描述】:

我是 React 新手,我正在尝试在没有 gem 的情况下将 react 与 rails 集成。不知何故,我成功地通过使用 web pack 进行了集成。在将数据检索到已存储在数据库中的视图时,我遇到了一个小问题。

这里有一些简单的解释

def index
  @products = Product.all
end

使用 Rails,我可以访问该实例变量并循环访问该变量并在视图中显示数据

我的想法是将实例变量分配给变量并使用此 React 组件,如下所示。

products = @products

products.map(function(product){
    return(
      product.id
      product.name
    )
});

但这对我不起作用。

我希望有人已经做到了,并且在不使用 gem 的情况下对 react 和 rails 有很好的想法,帮助我找到解决方案

提前致谢

【问题讨论】:

标签: ruby-on-rails ruby reactjs webpack


【解决方案1】:

我也是反应的新手,据我所知,我们不能分配 rails 对象直接反应

我对我的项目这样做是为了实现和你一样的功能

var Body = React.createClass({
    getInitialState() {
        return { products: [] }
    },
    componentDidMount() {
        $.getJSON(`/products.json`, (response) => { this.setState({ products: response }) });
    },
})

在此之后,您可以像这样使用“产品”变量

this.state.products

更多参考请访问this

希望对你有所帮助。

【讨论】:

    【解决方案2】:

    您需要在 rails 端渲染 JSON,然后从 React 中使用它。您将无法在 rails 应用程序之外访问 @products 变量。

    def index
      @products = Product.all
      render :json => @products.to_json
    end
    

    【讨论】:

    • 是的 grizzthedj,我做到了,但不是 vorking。
    • 当您在浏览器中点击/products.json 时,它是否返回有效响应?如果是这样,您应该在您的 componentWillMount 函数中添加 console.log(response) 以检查返回的内容。
    • 感谢 grizzthedj,我正在使用 api 响应。
    猜你喜欢
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 2018-08-06
    • 2016-06-17
    • 2020-01-10
    • 2017-03-29
    • 2023-03-27
    • 2017-07-31
    相关资源
    最近更新 更多