ctx.on()
Đăng ký sự kiện ngữ cảnh trong RunJS (như thay đổi giá trị field, thay đổi thuộc tính, refresh resource, v.v.). Sự kiện sẽ được map theo kiểu vào sự kiện DOM tùy chỉnh trên ctx.element hoặc event bus nội bộ của ctx.resource.
Kịch bản áp dụng
Định nghĩa kiểu
Sự kiện thường gặp
Quy tắc map sự kiện cuối cùng: prefix
resource:đi quactx.resource.on, các loại khác thường đi qua sự kiện DOM trênctx.element(nếu tồn tại).
Ví dụ
Two-way binding field (React useEffect + cleanup)
Lắng nghe DOM gốc (thay thế khi ctx.on không khả dụng)
Cập nhật UI sau khi resource refresh
Phối hợp với ctx.off
- Listener đã đăng ký bằng
ctx.onnên được loại bỏ qua ctx.off vào thời điểm thích hợp để tránh memory leak hoặc trigger trùng lặp. - Trong React, thường gọi
ctx.offtrong hàm cleanup củauseEffect. ctx.offcó thể không tồn tại, khi sử dụng khuyến nghị thêm optional chaining:ctx.off?.('eventName', handler).
Lưu ý
- Hủy theo cặp: Mỗi lần
ctx.on(eventName, handler)đều phải cóctx.off(eventName, handler)tương ứng, và tham chiếuhandlerđược truyền vào phải nhất quán. - Vòng đời: Loại bỏ listener trước khi component unmount hoặc context bị hủy, nếu không có thể dẫn đến memory leak.
- Tính khả dụng của sự kiện: Các loại context khác nhau hỗ trợ các sự kiện khác nhau, cụ thể tham khảo tài liệu của từng component.
Tài liệu liên quan
- ctx.off - Loại bỏ event listener
- ctx.element - Container render và sự kiện DOM
- ctx.resource - Instance resource và
on/offcủa nó - ctx.setValue - Đặt giá trị field (sẽ trigger
js-field:value-change)

