Livewire 親子コンポーネントについて、親のプロパティを更新するには?Wireable編
Laravel と Livewire をインストールして、ライブワイヤーの親子のコンポーネントを作成してみます。 プロジェクト名(wireble)を決めて以下のコマンドを実行します。 インストール時にプロジェクト名のディレクトリが作成されます。 インストールの最後に sudo でパスワードの入力を求められます。 ↓下のメッセージが表示されてインストールは終わります。 sail のエイリアスを定義します。 Laravel のインストールはここまで。 「sail up」でコンテナを起動します。 ララベルのトップディレクトリで、Livewireパッケージ をインストールします。 ライブワイヤーをテストするビューを作成します。resources/views/livewire.blade.php routes/web.php にルートを定義します。 これでブラウザでアクセスできるようになりました。 データ転送オブジェクトを作成します。。app/Http/Livewire/Settings.php ライブワイヤーの親コンポーネントを作成します。app/Http/Livewire/ParentComponent.php イベントをキャッチするには「protected $listeners」に定義します。 注目するポイントは33行目の「:settings=”$settings”」です。モデルではなくオブジェクトを渡しているところです。 ライブワイヤーの子コンポーネントを作成します。app/Http/Livewire/ChildComponent.php 親にイベントを送るには「emit()->up()」を使います。 ブラウザでアクセスしてみましょう。 キーボードから子コンポーネントのテキストボックスに何か入力すると、クリアボタンの下の文字(子コンポーネント)と親コンポーネントの文字が変わります。子コンポーネントからイベントを発行して、親コンポーネントの Settings を更新することができました。 ↑当初は子コンポーネントでオブジェクトを変更したら、イベントを発行しなくても親オブジェクトの値も変更されるのかなぁ?と思って確認してみたという感じです。 今回、子コンポーネントの dehydrateフック でイベントを発行しました。当初は updatedフック でイベントを発行していました。テキストボックスに値を入力した場合には、updatedフック が呼び出されますが、クリアボタンを押してプロパティを書き換えた場合には、updatedフック は呼び出されません。dehydrateフック でイベントを発行しない場合は、updateフック と clickメソッド でイベント発行しなくてはなりません。
Livewire 親子コンポーネントについて、親のプロパティを更新するには?Wireable編 Read More »