Javascript react rails:创建记录后组件不会重新呈现
在我学习教程的过程中,我试图在通过AJAX调用创建新记录(游戏)后重新渲染GamesBox 记录被保存,我可以通过刷新看到它,但是这似乎不是反应方式 容器: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, 成功:功能(游戏){
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、 egame:这是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)}
将不会更改任何内容。