私は、経験豊富なリアクティブ プログラマーにとってかなり日常的であると思われる興味深い状況があるライブラリ (ScalaJS
および具体的には) を使用しています。withと callbackreact
があります。ここでの基本的な考え方は、確実にコールバックがトリガーされたが、最後の から変更されていない場合は、 を返すということです。それ以外の場合、変更が問題になる場合はおそらく戻ります。Component
State
shouldComponentUpdate(State)
State
render
false
true
State
私はライブラリを使用していますmonix
が、他のリアクティブ ライブラリと同じように見えるので、これはかなり文脈に依存しない質問だと思います。
私は次のようなことをしたいと思います:State
最後のrender
. それぞれrender
で、バッファをクリアします。または、renderedState
レンダリングされたすべての状態をシーケンスとして反映するreceivedState
サブジェクト、受信したすべての State
更新を反映するサブジェクト、最新のものと最新のものとが一致するneedsUpdate
かどうかを反映するサブジェクトを用意します。しかし、私はこれらのアイデアを実際に実行するのに苦労しています。これが私が立ち往生している場所です:receivedState
renderedState
他のコールバックに対して行ったことは次のとおりです。
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>
使用し、コールバックがトリガーされたときに送信するだけです。Subject
onNext
- しかし、イベントの 1 つのタイプは、 または のいずれ
State -> Boolean
かの形をしていますState -> Callback<Boolean>
。 - レンダリング/受信された最後の状態の間のデルタを表すサブジェクトでこれをモデル化できるはずだと思います。
- ただし、これがリアクティブ スタイルにどのように適合するかはわかりません。