1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Livewire: Multiple root elements detected.

Last updated at Posted at 2024-03-04

Livewireで開発中、wire:clickを設定したボタンが全く反応しない。
開発者ツールを見ても、普通だったらEVENTが付くはずが付かない。
(Firefoxの開発者ツールだと、「livewire:ほにゃらあ」を設定すると、JSのEVENTが設定される)

開発者ツールのコンソールを除くと

Livewire: Multiple root elements detected. This is not supported. 
See docs for more information 
https://laravel-livewire.com/docs/2.x/troubleshooting#root-element-issues

と出ていた。
 複数のroot要素?
 それはサポートされていません?

なんとなくこれ系のエラーはlivewireに担当させるblade側のHTMLのしでかしだな・・と
(livewireに担当させるblade = render()内のreturn view()で指定したblade)
思ったので、HTMLタグをキレイにタブでインデントしていったら
粗く解説すると、以下の通りに

<div>
  <div>
    <div>
      aaaa
      <input type="text" wire:model="data1">
    </div>
  <div>
</div>
  <button wire:click="abc()">Add</button>
</div>

という感じでルートDIVから外れていた・・

ちなみにLivewireのBladeでは必ずコンテンツすべてを<div></div>で囲まないといけなくて
囲った範囲がLivewireで動的に扱える範囲って認識をする。

ので、そこから外れると、
「おい兄弟、その書き方だと俺達の範囲から外れるから動かないぜ」
というわけなんだな

たしかに確かに・・

なんかwire:clickとかが反応しなかったらbladeHTMLをキレイにしてみましょう。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?