能否在Laravel表单中独立嵌套Livewire 3组件并实现独立交互?
问题解决:Laravel传统表单内嵌套Livewire组件独立刷新/提交
当然可行,你遇到的问题是按钮默认行为导致的,具体解决方法如下:
问题根源
在<form>标签内的<button>元素,浏览器默认会将其识别为type="submit"类型,点击时会触发整个表单的提交,而非Livewire绑定的事件。
解决方案
方法1:给按钮指定type="button"
给组件内的按钮添加type="button"属性,阻止其触发表单提交,让Livewire的wire:click事件正常生效:
<div> Time: {{ time() }} <button type="button" wire:click="$refresh">Refresh</button> </div>
方法2:组件内部使用独立表单(适合有提交需求的组件)
如果你的Livewire组件需要独立提交数据,可以在组件内部嵌套自己的<form>标签,通过wire:submit.prevent绑定组件的提交方法,完全隔离外部表单的影响:
<div> <form wire:submit.prevent="saveComponentData"> <!-- 组件的表单字段 --> <input type="text" wire:model="name"> <button type="submit">保存组件数据</button> </form> </div>
调整后,组件就能独立完成数据刷新和提交,不会触发外部传统表单的提交操作。
内容的提问来源于stack exchange,提问作者Bob.
相关产品推荐
相关产品推荐

