feat(smartrouter): Add destroy method to SmartRouter class.
This commit is contained in:
		| @@ -1,5 +1,11 @@ | ||||
| # Changelog | ||||
|  | ||||
| ## 2024-10-06 - 1.3.0 - feat(smartrouter) | ||||
| Add destroy method to SmartRouter class. | ||||
|  | ||||
| - Introduced a destroy method to the SmartRouter class for cleaning up event listeners and route references. | ||||
| - Refactored popstate event listener to be removable, improving resource management and preventing memory leaks. | ||||
|  | ||||
| ## 2024-10-06 - 1.2.1 - fix(core) | ||||
| Ensure stability and performance improvements | ||||
|  | ||||
|   | ||||
| @@ -3,6 +3,6 @@ | ||||
|  */ | ||||
| export const commitinfo = { | ||||
|   name: '@push.rocks/smartrouter', | ||||
|   version: '1.2.1', | ||||
|   version: '1.3.0', | ||||
|   description: 'A JavaScript library providing routing capabilities for web applications.' | ||||
| } | ||||
|   | ||||
| @@ -41,6 +41,11 @@ export class SmartRouter { | ||||
|    */ | ||||
|   private basePath: string; | ||||
|  | ||||
|   /** | ||||
|    * Reference to the event listener function for cleanup | ||||
|    */ | ||||
|   private popstateListener: (event: PopStateEvent) => void; | ||||
|  | ||||
|   /** | ||||
|    * Creates an instance of Router. | ||||
|    */ | ||||
| @@ -53,10 +58,11 @@ export class SmartRouter { | ||||
|     this.basePath = basePath; | ||||
|  | ||||
|     // lets subscribe to route changes | ||||
|     window.addEventListener('popstate', (popStateEventArg) => { | ||||
|     this.popstateListener = (popStateEventArg) => { | ||||
|       popStateEventArg.preventDefault(); | ||||
|       this._handleRouteState(); | ||||
|     }); | ||||
|     }; | ||||
|     window.addEventListener('popstate', this.popstateListener); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
| @@ -119,4 +125,14 @@ export class SmartRouter { | ||||
|       } as IRouteInfo); // not waiting here | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Destroy the router instance, removing all external references | ||||
|    */ | ||||
|   public destroy() { | ||||
|     // Remove the event listener for popstate | ||||
|     window.removeEventListener('popstate', this.popstateListener); | ||||
|     // Clear all routes | ||||
|     this.routes = []; | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user