2017-05-29 14 views
1

何かの状態を設定した後に実行する必要がある機能があります。 ()コンソールが未定義ログインしないか、何もしますが、私は背中のような呼び出しからブラケットを取り外したときにそれはそうです:私のコールバック関数は、ブラケットを持っている場合状態変更後にsetStateコールバックが起動しない

setState({ 
    myState:myState 
},secondFunction()) 

secondFunction =() => { 
    console.log(this.state.myState); 
} 

を:私はそれを呼び出すためにそのようsetStatesコールバック関数を使用しています動作するように:私は括弧を持つことが非常に参考になる関数が呼び出された順に違う理由を誰かが私に説明することができればそう反応するように新たなんだ

setState({ 
    myState:myState 
},secondFunction) 

を!

答えて

3

理由は、あなたがfunctionsetStateはそれをタスクを完了すると呼ばれる取得したい、それが機能を期待することができますが、()を使用するときにfunctionを渡していないことを意味、あなたはfunctionを呼び出していますさ。

同じことを書いて他の方法は次のとおりです。secondFunctionとsecondFunction間

setState({ 
    myState:myState 
},() => secondFunction()) 

setState({ 
    myState:myState 
}, function(){ secondFunction() }) 

は違い():

secondFunction関数本体しかしsecondFunction()結果を返します返します。その機能の

チェックこのスニペット:

function abc(){ 
 
    return 'Hello' 
 
} 
 

 
console.log("body", abc); 
 

 
console.log("result", abc());

+0

オールクリア感謝! –

1

setStateは、コールバックとしての機能を想定しています。

括弧()を追加すると、関数secondFunctionが呼び出され、2番目の引数として返されるものはすべてsetStateに渡されます。あなたの関数は何も返さないので、undefinedまたはnothingです。

あなたがしたいことは、かっこなしで行われる関数自体を渡すことです(後で呼び出すことができます)。

関連する問題