2016-04-29 4 views
0

私は自分のコードに次き:ReactのsetState内でコールバックがブロックされているのはなぜですか?

this.setState({newState}, function(){ this.focus }); 

しかし、私は他のコールバック、そのブロックのすべてを含む場合。これは、setState内に関数コールバックを持つ正しい方法ですか?

+0

これは、それに直面してsetStateの後に何かをする正しい方法です。あなたはあなたが見ている問題について詳しく説明できますか?関数のコンテキストが適切に束縛されていない可能性があるので、 'this'はあなたの例では未定義です。非常に奇妙な – djskinner

+0

が、私は問題が何であるかを考え出した.. – reectrix

答えて

0

はどうやら、状態を有するオブジェクトとして渡され、対明示的に状態変数を定義すると、このブロッキングを引き起こしているものです。

間違っ:

let newState = { 
    var1: true, 
    var2: false 
}; 
this.setState({newState}, function(){ this.focus }); 

右:

this.setState({var1: true, var2: false}, function(){ this.focus }); 
+1

右ので、 '{NewStateには}' '{NewStateに:NewStateに}の省略形である新しいES6機能である'を。 'this.setState(newState、function(){this.focus});' newState'が中括弧で囲まれていないことに注意してください。 – djskinner

0

任意の更なるコンテキストなしで私はthisは未定義であり、エラーが飲み込ま取得されることをお勧め。これを試してください:

this.setState(newState,() => this.focus()); 
関連する問題