支持交互

    函数属性(如事件处理程序)会自动绑定到实例化此虚拟节点的部件的 this 上下文。但是,如果将已绑定的函数传给属性值,将不会重复绑定给 this

    处理 focus

    输出 VNode 时,部件可以使用 VNodePropertiesfocus 属性来控制生成的 DOM 元素在渲染时是否获取焦点。这是一个特殊属性,它可接收一个 boolean 类型的对象或者是返回一个 类型的函数。

    当直接传入 true 时,只有上一次的值不是 true 时,元素才会获取焦点(类似于)。而传入函数时,只要函数返回 true,元素就会获取焦点,而不管上一次返回值。

    例如:

    基于函数的部件:

    基于类的部件:

    基于函数的部件可使用 focus 中间件为其子部件设置焦点,或者接受来自父部件的焦点。基于类的部件可使用 FocusMixin(来自 @dojo/framework/core/mixins/Focus)以相同的方式委托 focus。

    FocusMixin 或者 focus 中间件也会为部件的 API 添加一个 focus 函数属性。框架使用此属性的布尔结果来确定渲染时,部件(或其一个子部件)是否应获得焦点。通常,部件通过其 focus 属性将 shouldFocus 方法传递给特定的子部件或输出的节点上,从而允许父部件将焦点委托给其子部件。

    基于函数的部件的示例,请参阅 Dojo 中间件参考指南中的

    下面基于类的部件示例,显示了在部件层次结构内和输出的 VNode 之间委托和控制焦点:

    src/widgets/FocusableWidget.tsx