如何使用组件模板将数据从 child 传递到 parent?

How to pass data from child to parent using component templating?

我从 laravel 开始 Laravel8,据我所见,他们正在转向使用组件模板,例如:

<-- layout.blade.php -->

<html>
<body>
{{ $slot }}
</body>
</html>
<-- view.blade.php -->

<x-layout>
    <main>Content</main>
</x-layout>

相对于@yield 和@extends 类型模板:

<--layout.blade.php -->

<html>
<body>
    @yields('content')
</body
</html>
<-- view.blade.php -->

@extends('layout')
@section('content')
   Content
@endsection

现在我正在努力为每页创建动态标题。

<-- views/components/layout.blade.php -->

<html>
<head>
  <title>{{ isset($title) ? $title . ' | ' . config('app.name') : config('app.name') }}</title>
</head>
<body>
    {{ $slot }}
</body>
</html>
<-- views/articles/index.blade.php -->

<x-layout>
    <main>Content</main>
</x-layout>

然后是文章控制器

public function index()
    {
        $title = 'Articles';

        return view('articles.index', [
            'articles' => Article::latest('published_at')->filter(request(['search', 'category']))->get(),
            'title' => $title,
        ]);
    }

使用较新的“组件模板”样式,如何将 articles/index.blade.php 视图中的 $title 传递给布局组件?这是这种方法的局限性吗?

我看过很多关于如何使用 @yields @extends 方法实现此目的的文章或文章,但如果我采用的方法具备这些功能,我会尽量避免重做我的整个网站。

我想出了解决这个问题的方法。您可以像将数据传递给子组件一样将数据传递给父组件。

<-- views/articles/index.blade.php -->

<x-layout :title="$title">
    <main>Content</main>
</x-layout>

允许从子项更新父项。