Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript react rails:创建记录后组件不会重新呈现_Javascript_Ruby On Rails_Ajax_Reactjs_React Rails - Fatal编程技术网

Javascript react rails:创建记录后组件不会重新呈现

Javascript react rails:创建记录后组件不会重新呈现,javascript,ruby-on-rails,ajax,reactjs,react-rails,Javascript,Ruby On Rails,Ajax,Reactjs,React Rails,在我学习教程的过程中,我试图在通过AJAX调用创建新记录(游戏)后重新渲染GamesBox 记录被保存,我可以通过刷新看到它,但是这似乎不是反应方式 容器: var GamesBox=React.createClass({ getInitialState:函数(){ 返回{ 游戏:这个。道具。游戏 } }, parentGameSubmit(formData){ $.ajax({ 网址:“/游戏”, 数据类型:“json”, 键入:“POST”, 数据:formData, 成功:功能(游戏){

在我学习教程的过程中,我试图在通过AJAX调用创建新记录(游戏)后重新渲染GamesBox

记录被保存,我可以通过刷新看到它,但是这似乎不是反应方式

容器:

var GamesBox=React.createClass({
getInitialState:函数(){
返回{
游戏:这个。道具。游戏
}
},
parentGameSubmit(formData){
$.ajax({
网址:“/游戏”,
数据类型:“json”,
键入:“POST”,
数据:formData,
成功:功能(游戏){
this.setState({games:games});
}.绑定(此),
错误:功能(响应、状态、错误){
log(this.props.url,status,err.toString())
}.绑定(此)
});
},
渲染(){
返回(
大家好
);
}

});除了你的表格,一切看起来都很好。范围更改当您在事件处理程序中时,必须绑定上下文

onChange={this.handleNameChange.bind(this)}

onSubmit={this.newGameSubmit.bind(this)}

试试这个:

var GameForm=React.createClass({
getInitialState:函数(){
返回{name::};
},
resetState:函数(){
this.setState({name:});
},
新游戏提交:功能(e){
e、 预防默认值();
this.props.parentGameSubmit({game:{name:this.state.name,white_casting:this.state.white_casting,black_casting:this.state.black_casting}},
本州);
this.setState({name:'});
},
handleNameChange:功能(e){
this.setState({name:e.target.value});
},
RenderGameMenameField:函数(){
返回(
);
},
render:function(){
返回(
创建新游戏
{this.renderGameNameField()}
);
}
});
  • 你经常在游戏和游戏之间交换信息。i、 e
    game:这是
    GameBox
    组件中的.props.games
    。你应该使用游戏,如果它是一个数组,在这种情况下。(我假设这是真的,因为您在
    游戏
    组件中使用了地图功能)
  • 当成功发送ajax时,您正在更新游戏状态,而不是您实际使用的游戏状态

  • 如果你想要一个超级快速修复,你可以改变
    this.setState({games:games})
    this.setState({game:games})在你的
    parentGameSubmit
    函数中。

    React.createClass
    已经自动绑定了所有函数,
    onChange={this.handleNameChange.bind(this)}
    onSubmit={this.newGameSubmit.bind(this)}
    将不会更改任何内容。