vide/docs/tut/crash-course/10-cleanup.md
alicesaidhi f8e84f9f8d
Improve Documentation Site (#41)
* update css and snippets

* Add banner

* improve home page

* Update Banner

* cleanup

* Update font to JetBrains Mono

* Add a quick look to Home

* Simplify Home Page

* Removed banner, removed copyright notice, reduced home page
2024-11-03 17:32:19 +00:00

1.1 KiB

Cleanup

Sometimes you may need to do some cleanup when destroying a component or after a side-effect from a source update. Vide provides a function cleanup() which is used to queue a callback for the next time a reactive scope is rerun or destroyed, or when a stable scope is destroyed.

local root = vide.root
local source = vide.source
local effect = vide.effect

local count = source(0)


local destroy = root(function()
    effect(function()
        local x = count()
        cleanup(function() print(x) end)
    end)

    cleanup(function() print "root destroyed" end)
end)

count(1) -- prints "0"
count(2) -- prints "1"
destroy() -- prints "2" and "root destroyed"

::: tip Roblox instances do not need to be explicitly destroyed for their memory to be freed, they only need to be parented to nil. So there is no need to use cleanup() to destroy instances. However, be wary of connecting a function that references an instance to an event from the same instance, this causes the instance to reference itself and never be freed. In such a case you would need to use cleanup() to disconnect this connection or to explicitly destroy the instance. :::