roact
roact copied to clipboard
Prevent firing Change events when a component is unmounting
Was having issues creating a simple repro, but had ran into issue with this when unmounting a TextBox that has a Roact.Change.Text assignment. The function bound to Roact.Change.Text calls setState which would invoke the following error when unmounting:
CorePackages.Packages._Index.roblox_roact.roact.createSignal:52: Listeners can only be disconnected once.
In element:
<enable element tracebacks>
Stack Begin
Script 'CorePackages.Packages._Index.roblox_roact.roact.RobloxRenderer', Line 268 - function updateHostNode
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 234 - function updateVirtualNode
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 72 - function updateChildren
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 111 - function updateVirtualNodeWithChildren
Script 'CorePackages.Packages._Index.roblox_roact.roact.RobloxRenderer', Line 273 - function updateHostNode
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 234 - function updateVirtualNode
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 72 - function updateChildren
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 111 - function updateVirtualNodeWithChildren
Script 'CorePackages.Packages._Index.roblox_roact.roact.RobloxRenderer', Line 273 - function updateHostNode
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 234 - function updateVirtualNode
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 72 - function updateChildren
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 111 - function updateVirtualNodeWithChildren
Script 'CorePackages.Packages._Index.roblox_roact.roact.RobloxRenderer', Line 273 - function updateHostNode
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 234 - function updateVirtualNode
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 72 - function updateChildren
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 111 - function updateVirtualNodeWithChildren
Script 'CorePackages.Packages._Index.roblox_roact.roact.RobloxRenderer', Line 273 - function updateHostNode
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 234 - function updateVirtualNode
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 72 - function updateChildren
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 119 - function updateVirtualNodeWithRenderResult
Script 'CorePackages.Packages._Index.roblox_roact.roact.Component', Line 496 - function __resolveUpdate
Script 'CorePackages.Packages._Index.roblox_roact.roact.Component', Line 434 - function __update
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 238 - function updateVirtualNode
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 72 - function updateChildren
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 119 - function updateVirtualNodeWithRenderResult
Script 'CorePackages.Packages._Index.roblox_roact.roact.Component', Line 496 - function __resolveUpdate
Script 'CorePackages.Packages._Index.roblox_roact.roact.Component', Line 434 - function __update
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 238 - function updateVirtualNode
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 72 - function updateChildren
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 119 - function updateVirtualNodeWithRenderResult
Script 'CorePackages.Packages._Index.roblox_roact.roact.Component', Line 496 - function __resolveUpdate
Script 'CorePackages.Packages._Index.roblox_roact.roact.Component', Line 434 - function __update
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 238 - function updateVirtualNode
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 72 - function updateChildren
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 119 - function updateVirtualNodeWithRenderResult
Script 'CorePackages.Packages._Index.roblox_roact.roact.Component', Line 496 - function __resolveUpdate
Script 'CorePackages.Packages._Index.roblox_roact.roact.Component', Line 434 - function __update
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 238 - function updateVirtualNode
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 72 - function updateChildren
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 111 - function updateVirtualNodeWithChildren
Script 'CorePackages.Packages._Index.roblox_roact.roact.RobloxRenderer', Line 273 - function updateHostNode
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 234 - function updateVirtualNode
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 72 - function updateChildren
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 119 - function updateVirtualNodeWithRenderResult
Script 'CorePackages.Packages._Index.roblox_roact.roact.Component', Line 496 - function __resolveUpdate
Script 'CorePackages.Packages._Index.roblox_roact.roact.Component', Line 434 - function __update
Script 'CorePackages.Packages._Index.roblox_roact.roact.createReconciler', Line 238 - function updateVirtualNode