我选择使用 Inertia::share 然后在我的 app.blade 上我引用了相应的元素,例如标题等作为道具。
例如。 RouteController(返回惯性视图):
Inertia::share([
'title' => $title,
'description' => $description,
'meta_image' => $meta_image,
'meta_url' => $meta_url
]);
return Inertia::render...
App.blade:
<title>{{$page['props']['title'] ?? ''}}</title>
<meta name="description" content="{{$page['props']['description'] ?? ''}}">
...
最后,在我的 AppLayout.vue 中,我对这些用于页面更改的道具进行了观察:
watch: {
"$page.props.title"(newTitle) {
this.setPageData();
},
"$page.props.description"(newDescription) {
this.setPageData();
},
},
只需要查看标题,因为机器人应该重新加载每个页面(出于 SEO 目的),但这对于元标记(开放图)和 GA 来跟踪每个页面都很有效。