1

我正在使用一个库(特别是) ScalaJSreact在那里我遇到了一个有趣的情况,我认为这对于经验丰富的反应式程序员来说是非常常规的。我有一个ComponentwithState和一个 callback shouldComponentUpdate(State)。这里的基本思想是,如果回调被触发但State与上次没有变化render,则返回falsetrue否则,如果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触发回调时,处理程序会onNextchannel(主题)上触发。

shouldComponentUpdate不过是不同的。它返回一个值,因此需要采用不同的结构。我很难考虑正确的调整。

总结一下:

  • react在视图生命周期的不同阶段有回调,例如componentDidMount,componentDidUpdate等。
  • 我以相同的方式处理除了一个阶段之外的所有阶段 - 回调的形状是State -> Callback<Void>所以我所要做的就是对每种类型的生命周期事件使用 a并在触发回调时Subject提交它。onNext
  • State -> Boolean但是一种类型的事件具有或的形状State -> Callback<Boolean>
  • 我觉得我应该能够使用代表最后呈现/接收状态之间的增量的主题来对此进行建模。
  • 但是,我不知道这如何适应反应式风格。
4

0 回答 0