您可以使用 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.
我想在每次单击 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.