私は、経験豊富なリアクティブ プログラマーにとってかなり日常的であると思われる興味深い状況があるライブラリ (ScalaJSおよび具体的には) を使用しています。withと callbackreactがあります。ここでの基本的な考え方は、確実にコールバックがトリガーされたが、最後の から変更されていない場合は、 を返すということです。それ以外の場合、変更が問題になる場合はおそらく戻ります。ComponentStateshouldComponentUpdate(State)StaterenderfalsetrueState
私はライブラリを使用していますmonix が、他のリアクティブ ライブラリと同じように見えるので、これはかなり文脈に依存しない質問だと思います。
私は次のようなことをしたいと思います:State最後のrender. それぞれrenderで、バッファをクリアします。または、renderedStateレンダリングされたすべての状態をシーケンスとして反映するreceivedStateサブジェクト、受信したすべての State更新を反映するサブジェクト、最新のものと最新のものとが一致するneedsUpdateかどうかを反映するサブジェクトを用意します。しかし、私はこれらのアイデアを実際に実行するのに苦労しています。これが私が立ち往生している場所です:receivedStaterenderedState
他のコールバックに対して行ったことは次のとおりです。
lazy val channel_componentWillUpdate = channel_create[ComponentWillUpdate[Props, State, ResponsiveLayoutContainerBackend, TopNode]]
def componentWillUpdate(cwupd: ComponentWillUpdate[Props, State, ResponsiveLayoutContainerBackend, TopNode]) =
Callback {
channel_componentWillUpdate.onNext(cwupd)
}
そのため、componentWillUpdateコールバックがトリガーされると、ハンドラーonNextはchannel(件名) で起動します。
はshouldComponentUpdate違いますが。値を返すため、別の構造にする必要があります。適切な調整を考えるのに苦労しています。
少し要約すると:
react、 などcomponentDidMount、ビューのライフサイクルのさまざまな段階でコールバックがあります。componentDidUpdate- 1 つのステージを除いてすべて同じ方法で処理しています。コールバックの形状は、ライフサイクル イベントのタイプごとに
State -> Callback<Void>使用し、コールバックがトリガーされたときに送信するだけです。SubjectonNext - しかし、イベントの 1 つのタイプは、 または のいずれ
State -> Booleanかの形をしていますState -> Callback<Boolean>。 - レンダリング/受信された最後の状態の間のデルタを表すサブジェクトでこれをモデル化できるはずだと思います。
- ただし、これがリアクティブ スタイルにどのように適合するかはわかりません。