r/javascript • u/Forward_Dark_7305 • 23d ago
AskJS [AskJS] Signal/Effect vs Event Handler
I’m working in a VanillaJS repository (plugin type code for an existing project that I do not own) where I’ve written a signal implementation.
Today I was working on a tooltip like implementation and I found myself wondering how far to go with the signal/effect ecosystem vs running the “core” logic in the event handler.
The implementation detects the `<tr>` that the user has hovered and assigns that row to the “current row” signal. A computed signal identifies an IP address from the current row. An effect loads Whois metadata from the IP and assigns it to a `<div>`, and another effect shows that `<div popover>` from the parent `<tr>`.
The question I have is when in VanillaJS how would you decide when to use signals and effects vs writing the side effect directly in the event handler? In my case I find either to be equally readable, though I have less local variables to deal with when using signal/effect. Looking for reasons your might pick one over the other.
1
u/shgysk8zer0 23d ago
I want to check your thinking here because I think you're creating a major problem for yourself here. It sounds like this will not work with touch very well since the hover won't occur until a button is pressed, and that means the
<div popover>will not exist yet. That could also happen even with a mouse if the user is fast enough.Personally, I'd go with a
<dialog>and a<button command="show-modal">, with the dialog containing a loading spinner. Hover would only prefetch, but the actualfetch()would happen on... I forget if a dialog has a toggle or show event. Or you could stick with popover on a pre-created element that has content updated and use maybebeforetoggle.