rx 指南说尽可能避免副作用,如果它们不可避免,则将它们放在 do()(js 中的 doAction)子句中。
然而,在 UI 中一个非常常见的副作用是创建一些资源(比如 <div>)被下游引用(由子小部件)。您必须捕获这些资源的句柄,以便传递它们。例如,如果您有一个数据数组,每个数据都需要一个 div,您将为每个数据创建一个 div,并将这些 div 的句柄传递给子项。
但是 doAction() 会丢弃副作用的返回值,因此您无法捕获已创建对象的句柄。您必须在 select() 中执行副作用。
我看这一切都错了吗?创建的资源是状态,并且具有副作用。你想要流中的状态,但是你不能把它放在流中而不把副作用放在 select() 中,这是禁忌的。