From 0ab6ff72694b166c40667c92841fde87ae4865f6 Mon Sep 17 00:00:00 2001 From: Ethosa Date: Wed, 6 Nov 2024 09:32:50 +0700 Subject: [PATCH] component event @created -> @beforeCreated, add a new @created --- src/happyx/spa/components.nim | 11 ++++++----- src/happyx/spa/renderer.nim | 9 ++++++++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/happyx/spa/components.nim b/src/happyx/spa/components.nim index 757d99dd..225336e8 100644 --- a/src/happyx/spa/components.nim +++ b/src/happyx/spa/components.nim @@ -438,6 +438,7 @@ macro component*(name, body: untyped): untyped = ] usedLifeCycles = { "created": false, # at created + "beforeCreated": false, # at created "updated": false, # at HTML render end "rendered": false, # at render/reRender end "beforeUpdated": false, # before render/reRender @@ -825,11 +826,11 @@ macro component*(name, body: untyped): untyped = newNimNode(nnkIfStmt).add(newNimNode(nnkElifBranch).add( newCall("==", newDotExpr(ident"self", ident"isCreated"), newLit(false)), newStmtList( - newCall(newDotExpr(ident"self", ident"created"), ident"self"), - newAssignment( - newDotExpr(ident"self", ident"isCreated"), - newLit(true) - ) + newCall(newDotExpr(ident"self", ident"beforeCreated"), ident"self"), + # newAssignment( + # newDotExpr(ident"self", ident"isCreated"), + # newLit(true) + # ) ) )) ).add( diff --git a/src/happyx/spa/renderer.nim b/src/happyx/spa/renderer.nim index debdd983..bf977fe7 100644 --- a/src/happyx/spa/renderer.nim +++ b/src/happyx/spa/renderer.nim @@ -77,7 +77,8 @@ when defined(js): inCycle: bool, cycleCounter: var int, compCounter: string ): TagRef slotData*: TagRef - created*: ComponentEventHandler ## Calls before first rendering + beforeCreated*: ComponentEventHandler ## Calls before first rendering + created*: ComponentEventHandler ## Calls after first rendering exited*: ComponentEventHandler ## Calls after last rendering rendered*: ComponentEventHandler ## Calls after every rendering pageHide*: ComponentEventHandler ## Calls after every rendering @@ -357,10 +358,16 @@ when defined(js): components.del(comp.uniqCompId) for comp in currentComponentsList.mitems: comp = registerComponent(comp.uniqCompId, comp) + if not comp.isCreated: + comp.created(comp) + comp.isCreated = true comp.updated(comp, nil) createdComponentsList.setLen(0) else: for comp in currentComponentsList: + if not comp.isCreated: + comp.created(comp) + comp.isCreated = true comp.updated(comp, nil) currentComponentsList.setLen(0) if activeElement.hasAttribute("id"):