私はsetState
のコールバック関数を渡すのに2番目のパラメーターを使用しようとしていますが、サーバー側のレンダラーがこのパラメーターを完全に無視することがわかります。私はGatsbyを使用しています。これはサーバー側のレンダリングを使って静的なReactベースのサイトを構築しています。私のコールはonChange
ハンドラであり、そして次のようになります。予想通りリアクションサーバサイドレンダラでsetStateコールバック関数が省略されていますか?
this.setState({ [event.target.name]: event.target.value },() => { console.log('setState callback') })
状態が更新されますが、コールバックが呼び出されることはありません。 注:同じ問題は、私が最初のパラメータのためのオブジェクトや関数を渡すかどうかを適用します。成分関数は次のようになります。
ReactComponent.prototype.setState = function (partialState, callback) {
[...]
this.updater.enqueueSetState(this, partialState, callback, 'setState');
};
ReactUpdateQueue.js
に住んでいることアップデータの方法、(コールスタックに応じて)は次のようになります。
enqueueSetState: function (publicInstance, partialState)
私は完全には理解していませんReactのプロセスをビルドしますが、そのメソッド/ファイルはソース内のthisファイルから来ていると信じています:
/src/renderers/shared/server/ReactPartialRenderer.js
私は、この関数が定義されて見つけることができる
唯一の他の場所はhereです:
/src/isomorphic/modern/class/ReactNoopUpdateQueue.js
enqueueSetState: function(
publicInstance,
partialState,
callback,
callerName,
) {
warnNoop(publicInstance, 'setState');
}
正しいメソッドシグネチャのように見えますが、私は自分のコードでsetState
コールをデバッグするとき、コールスタック内のどこにも表示されません。これは、クライアント側でレンダリングされたReactコンポーネントの問題ではないようです(この問題を示すために単純なレポを設定しようとしますが、CodePenなどではレプリケートできません)。componentDidUpdate
私は何をする必要があるか達成が、コールバックは、私のインスタンスではるかに便利である、と私は、このような未解決の謎を残して嫌いに。 :)