【问题标题】:Can you hit a Rails controller action using React?你可以使用 React 实现 Rails 控制器动作吗?
【发布时间】:2015-05-26 16:29:10
【问题描述】:

我想在每次单击 div 时使用控制器生成的随机数更新该值。由于值是从 Rails 控制器静态下降的,这是否意味着我必须向路由提交 ajax 请求?

我知道我可以通过一些 JavaScript 代码设置状态来达到相同的效果,但我特别想知道我是否可以从控制器中获取这个值。

请帮我填写handleClick函数。

react-rails gem 用于在视图中渲染组件。

控制器

class PostsController < ApplicationController
  def index
    @num = (1..100).to_a.sample
  end
end

查看

<%= react_component("Num", { value: @num }) %>

组件

var Num = React.createClass({
  getInitialState: function() {
    return {
      value: this.props.value
    };
  },

  handleClick: function() {

  },

  render: function() {
    return (
      <div className="num" onClick={this.handleClick}>
        { this.state.value }
      </div>
    );
  }
});

【问题讨论】:

  • 可以在javascriptstackoverflow.com/questions/4959975/…中生成随机值。也很确定您在&lt;div className="num" ... 处有语法错误。
  • @maxcal -- 感谢您的建议。我知道我可以做到。不过,我想在每次点击时从服务器获取数据

标签: javascript ruby-on-rails ruby reactjs


【解决方案1】:

简短回答:是的,您必须执行 Ajax 请求。

更务实的是,如果您知道预期的结果,您可以先更新状态,同时等待 Rails 服务器的响应。然后在 Ajax 调用完成之后。用预设值校准返回值。如果它们相同,React 的虚拟 dom 将足够智能,不会更新 UI。

【讨论】:

    猜你喜欢
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多