Open sacrosanctic opened 2 months ago
Another idea
State referenced in its own scope will never update. If you want to keep reactivity alive across boundaries, use a closure (like an arrow function, e.g.
foo(() => myState)
instead offoo(myState)
)
The first sentence could maybe also be simplified, the reference to scope does not seem all that helpful and it might be more straightforward to tell the user what will happen rather that what won't. E.g. something like
This state is only read once.
I imagine this situation would be quite common and will be mentioned in the upcoming docs.
This state is only read once. If you want reactivity, use a closure (like an arrow function, e.g. foo(() => myState) instead of foo(myState)). See https://docs...
Can I open a PR for this?
Describe the bug
https://github.com/sveltejs/svelte/blob/0203eb319b5d86138236158e3ae6ecf29e26864c/packages/svelte/src/compiler/warnings.js#L642-L648
"How to use a closure?" was asked several times in discord. In addition, closure only refers to functions where classes also serve the same purpose.
I propose an update to the message "State referenced in its own scope will never update. Did you mean to reference it inside either a function or a class?"
related discord posts https://discord.com/channels/457912077277855764/1235970955612786719 https://discord.com/channels/457912077277855764/1278658234810634282 https://discord.com/channels/457912077277855764/1275188058089586688
Reproduction
.
Logs
No response
System Info
Severity
annoyance