If it’s continuous then there is no reason to remove it. There is always some state… either laser firing or laser not firing.
The reason movement is done this way is because it’s sent unreliably… so you have to send ‘up’ continuously as well as ‘down’.
“Lasers” may work this way but more likely it’s another continuous ‘pressing fire button’ ‘not pressing fire button’… then the server will decide what to do with that information. For example, if the player has a laser equipped then the server-side game session will create the laser beam entity if the button is pressed and the entity is not already created. It will delete the laser beam entity if the button is released and the entity is not null.
The laser beam will deal continuous damage wherever it’s aimed as long as it exists.
If your ‘laser’ is more like the ‘pew pew pew’ blaster variety then the server side session spawns laser bolt entities while the button is pressed and time has expired since the last bolt based on rate of fire.
Never was there a need to add a component to something just to say to create this other things and add a component to it. Down that path eventually leads to crazy if you aren’t carefull. ("See… there’s a button component and a system that looks up the tool and adds a tool component… then a system that looks up the tool component to see what tool is equipped and add the laser component… and then another system to… etc…)
…when a single factory method called early would have been fine.