VTek
1st project here. Trying to attach a hook. I’ve spent hours logging everything I can think of to figure out why I can see my hook mount and even verify it mounts to the id I gave the element, but nothing I do will fire it.
Is there a way to trigger it from F12 console to confirm it’s even there? I tried this, but get true, and no console.log that I’m expecting:
hookElement.dispatchEvent(new CustomEvent("phx:update"))
TL;DR but here’s the now obnoxious dysfunctional hook (and yes I do send it when I new LiveSocket):
console.log("Hook definition reached");
let Hooks = {};
Hooks.IntroductionComplete = {
mounted() {
console.log("IntroductionComplete hook mounted on " + this.el.id);
this.lastEventTime = 0;
this.setupEvent();
if (this.el) {
this.el.dispatchEvent(new CustomEvent("phx:update"));
}
else console.log("No element found");
},
updated() {
console.log("IntroductionComplete hook updated");
this.setupEvent();
},
setupEvent() {
console.log("Before setting up introduction_complete event listener");
if (this.hasEventListener) return;
setTimeout(() => {
this.hasEventListener = true;
console.log("Setting up introduction_complete event listener");
this.handleEvent("introduction_complete", () => {
console.log("Entering introduction_complete event handler");
console.log("Introduction complete event received");
this.revealTextArea();
});
console.log("After setting up introduction_complete event listener");
}, 300); // Adjust the delay for testing
},
revealTextArea() {
console.log("Revealing text area");
// Implement logic to reveal or enable the text area here
}
};
Trending in Questions
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
Hello,
I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind.
However, when I launch mix phx.server, I get an error...
New
Hi everyone,
I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding.
I sta...
New
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
I’m working on a small exercise involving update_in/3, and I came up with this solution:
data = %{
name: "Periodic Table",
category:...
New
I’ve got trouble wrapping my head around the order in which functions are called in this snippet (from Phoenix’s authentication):
toke...
New
Other Trending Topics
Edit: 2026 May 15 - This post is archived.
Mob is alive!!
Main docs: mob v0.7.11 — Documentation
A bit of explanation for the slightly c...
New
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ai
- #ecto-query
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #metaprogramming
- #hex










Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
regex.sh
You “dispatch” Hook by hooking it to an HTML element with id…
VTek
I’ve put it on divs and things at all different levels, root, app, component, sub-component, here’s where I have it now:
It doesn’t work, no matter where I put it.
I call it like this and console logs tell me it’s called:
I’m so new at phx that I’m sure it’s something silly. I even stumbled on possibly using phx-update=“ignore” which seemed counterintuitive, but I’m stumped. AI is no help at all, it makes stuff up. So I’d hoped if I understood where the event is actually put in the dom I could see if it’s even there. AI just made stuff up:
“My previous suggestions regarding __phoenixHooks and __phxHookInstances were incorrect in terms of how you directly access hook instances on DOM elements in the browser console.”
Adzz
What are you trying to do with the hook first?
revealTextAreaimplies showing / hiding something which can be done more simply either with CSS and HTML (eg a<detail>component) or with the JS functions like toggle.If you just want to get a hook working start with something very simple that adds a class to change the color of the element clicked. That way you can proceed in steps and see if the problem is defining the hook, or what the hook does.
This implies that the hook is “hooked up” correctly, suggesting that what you have written in the hook doesn’t do what you expect it to do.
VTek
There is a server side delayed typing simulation response being pushed and that’s working. When the simulation completes I used push_event(socket, “introduction_complete”, %{}) to try to tell the dom that the process was complete and to show the textbox, but now all I have it doing is writing a console.log, which isn’t happening after sending the event.
I must misunderstand push_event, does it require that the client side rerender to trigger it? I’d thought liveview was controlling the dom and not the other way around. More than the specific functionality that’s what I’m trying to understand. Since pushing the event doesn’t trigger the console log I’m pretty sure I can’t change css or anything else really.
Thanks for the response!
LostKobrakai
Could it be that you’re not assigning this back to a socket?
push_eventis not a sideeffect. The event is just queued and pushed once the socket is returned from the callback.VTek
Thank you again! I’m sure that’s the concept I’m not getting, here’s the server side handler that triggers it, everything is working except for the hook:
Server console:
LostKobrakai
That’s the incorrect part. You need
socket = push_event(…).VTek
yessir, that was it!
I misunderstood the socket parameter to be enough.
VTek
out of curiosity, does the hook into the dom element itself get set in such a way that it could be triggered manually from the f12 console?
Adzz
The hook is just JS that gets added to the bundle. It is available on
liveSocket.hooks.in the console but whether you can “trigger” it really depends on what the hook does. In general though I wouldn’t recommend that approach because the app cares about how it gets triggered by phoenix, so that’s what you should test and see in dev.Live socket is defined here https://github.com/phoenixframework/phoenix_live_view/blob/main/assets/js/phoenix_live_view/live_socket.js you can enable things like
enableDebugwhich may help depending on what you want