核心渲染中间件

    这是最重要的中间件,在部件的失效生命周期中设置了一个钩子。调用了 invaludator() 后,会将要渲染的部件排列到下一次的渲染计划中。

    API:

    • invalidator()

    node

    支持通过节点的 key,访问部件底层的 DOM 节点。当被请求的 DOM 节点是有效的,但还不可用时,Dojo 就立刻重新渲染部件,直到 DOM 节点变为可用。

    API:

    • node.get(key: string | number): HTMLElement | null
      • 根据节点的 key 属性,返回部件中指定的 DOM 元素。如果当前部件中不存在指定的 DOM 元素,则返回 null

    编写自定义的 diff 函数时,通常需要与 中间件组合使用,以便需要更新部件的 DOM 节点时,将当前部件标记为无效。

    注意: 在组合部件或中间件的生命周期中,只能为指定的属性注册一个 diff 函数,后续的调用将被忽略。渲染引擎有一套默认算法,该算法对对象和数组进行 shallow 对比,忽略函数,而对其他所有属性进行相等检查。为属性设置了自定义的 diff 函数后,将会覆盖 Dojo 默认的差异检测策略。

    API:

    • diffProperty(propertyName: string, diff: (current: any, next: any) => void)
      • 注册指定的 diff 函数,该函数用于确定部件的 propertyName 属性的 currentnext 值之间是否存在差异。

    destroy

    指定一个在部件销毁时调用的函数,可以销毁占用的任何资源。

    API:

    1. import destroy from '@dojo/framework/core/vdom';
    • destroy(destroyFunction: () => void)

    通过处理器接口(handler interface),支持访问部件自身的 Registry 实例,如果需要的话,也可以访问应用程序一级的 Registry

    注意: Registry 是一个高阶概念,在编写 Dojo 应用程序时通常用不到。它主要在框架内部使用,以实现更高阶的面向用户的功能,如 。

    API:

    • getRegistry(): RegistryHandler | null
      • 返回当前部件的 RegistryHandler,如果部件未完全初始化,则返回 null

    defer

    API:

    1. import defer from '@dojo/framework/core/vdom';
      • 暂停当前部件的进一步渲染,直到标记为恢复。
    • defer.resume()
      • 恢复部件的渲染。