【发布时间】:2017-02-02 18:47:49
【问题描述】:
【问题讨论】:
标签: reactjs scala.js scalajs-react
【问题讨论】:
标签: reactjs scala.js scalajs-react
据我所知,只是回调的正常含义——响应事件而调用的函数。因此,例如在React Component 中,有许多像componentDidMount 这样的函数在组件生命周期的不同阶段被调用。在 scalajs-react 中,这些被实现为返回 CallbackTo[Unit] 的函数,由于类型别名,它也可以写为 Callback。例如,将componentDidMount 回调添加到ReactComponentB 时,我们使用def componentDidMount(f: DuringCallbackM[P, S, B, N] => Callback): ReactComponentB[P, S, B, N]。
在 javascript 中,组件应立即在 componentDidMount 函数(或其他回调)中运行事件的任何副作用。在 scalajs-react 中,组件将这些效果包装在 Callback 中,然后返回。这允许 scalajs-react 系统延迟 Callback 中代码的实际执行 - 这稍后通过调用 runNow() 来完成。这也意味着Callbacks 使用map、flatMap、>> 等组合在一起。除非最终调用runNow(),否则它们将不会运行,因此如果您没有将Callback 返回到其他代码以稍后执行,仅创建它不会执行任何操作。
【讨论】: