支持交互
函数属性(如事件处理程序)会自动绑定到实例化此虚拟节点的部件的 this
上下文。但是,如果将已绑定的函数传给属性值,将不会重复绑定给 this
。
处理 focus
输出 VNode
时,部件可以使用 VNodeProperties
的 focus
属性来控制生成的 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