hi Vince
The input is wire:model to the public property in your component. This binding is two-way. Whenever you change the value on either side, it is reflected in the other.
So with your input element, every keypress sends a network request to the backend to keep it in sync.
If you don't need this level of coupling, you can add .lazy to the wire model statement and now the network request is only sent when the field is dirty and looses focus.
You can echo the public property elsewhere on the page with simple blade {{ }} tags
If you want to perform logic on the backend when the public property changes value then you can create updating or updated methods (public property $foo monitored with updatedFoo() )
No need for a button to trigger actions.
Hope this helps