ctx.on()
在 RunJS 中订阅上下文事件(如字段值变化、属性变化、资源刷新等)。事件会根据类型映射到 ctx.element 上的自定义 DOM 事件或 ctx.resource 的内部事件总线。
适用场景
类型定义
常见事件
事件最终映射规则:以
resource:为前缀的走ctx.resource.on,其余通常走ctx.element上的 DOM 事件(若存在)。
示例
字段双向绑定(React useEffect + 清理)
原生 DOM 监听(ctx.on 不可用时的替代)
资源刷新后更新 UI
与 ctx.off 的配合
- 使用
ctx.on注册的监听,应在适当时机通过 ctx.off 移除,避免内存泄漏或重复触发。 - 在 React 中,通常在
useEffect的 cleanup 函数中调用ctx.off。 ctx.off可能不存在,使用时建议加可选链:ctx.off?.('eventName', handler)。
注意事项
- 配对取消:每次
ctx.on(eventName, handler)都应有对应的ctx.off(eventName, handler),且传入的handler引用必须一致。 - 生命周期:在组件卸载或 context 销毁前移除监听,否则可能导致内存泄漏。
- 事件可用性:不同 context 类型支持的事件不同,具体以各组件文档为准。
相关文档
- ctx.off - 移除 事件监听
- ctx.element - 渲染容器与 DOM 事件
- ctx.resource - 资源实例及其
on/off - ctx.setValue - 设置字段值(会触发
js-field:value-change)

