您可以使用 React 执行 Rails 控制器操作吗?

Can you hit a Rails controller action using React?

我想在每次单击 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>
    );
  }
});

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

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