Limit cleanup() calls to once per scope

This commit is contained in:
Aaron Smith 2023-08-22 11:46:56 +01:00
parent 2aebaf5abb
commit 0105e33fac
5 changed files with 63 additions and 5 deletions

View file

@ -2,7 +2,7 @@
## cleanup()
Runs a callback anytime a reactive scope is re-ran.
Runs a callback anytime a function scope is re-ran.
- **Type**
@ -10,6 +10,19 @@ Runs a callback anytime a reactive scope is re-ran.
function cleanup(callback: () -> ())
```
- **Details**
The primary purpose of this function is to provide a means of cleaning up
side effects caused by source updates and `watch()` updates.
The stack is inspected to find the function that calls `cleanup()`. The
callback passed is called anytime the caller is re-ran, and when the caller
finally garbage collects.
::: warning
Only one `cleanup()` call is allowed per function scope.
:::
- **Example**
```lua

View file

@ -17,6 +17,7 @@ Currently, strict mode will:
4. Checks for `indexes()` and `values()` returning primitive values.
5. Checks for duplicate nested properties at same depth.
6. Better error reporting and stack traces.
7. Checks for multiple `cleanup()` calls in the same function scope.
By rerunning sources and watchers, any side-effects are made more apparent.
This also helps ensure that cleanups are being handled correctly.