响应
响应
创建响应
创建一个inertia响应很简单。要开始,请在您的控制器或路由中调用Inertia::render()
方法,提供您希望渲染的JavaScript页面组件的名称以及页面上的任何属性(数据)。
在下面的示例中,我们将传递一个单一属性(event
),其中包含四个属性(id
, title
, start_date
和description
)给Event/Show
页面组件。
use Inertia\Inertia;
class EventsController extends Controller
{
public function show(Event $event)
{
return Inertia::render('Event/Show', [
'event' => $event->only(
'id',
'title',
'start_date',
'description'
),
]);
// 或者,您可以使用inertia()助手...
return inertia('Event/Show', [
'event' => $event->only(
'id',
'title',
'start_date',
'description'
),
]);
}
}
在Laravel应用程序中,Event/Show页面通常对应于位于resources/js/Pages/Event/Show.(js|vue|svelte)文件。
为了确保页面加载快速,请仅返回页面所需的最小数据。此外,请注意从控制器返回的所有数据都将在客户端可见,因此请务必省略敏感信息。
根模板数据
有时候你可能想要在你的应用程序根Blade模板中访问你的属性数据。例如,您可能希望添加一个meta描述标签、Twitter卡片元标签或Facebook开放图谱元标签。您可以通过$page
变量访问这些数据。
<meta name="twitter:title" content="{{ $page['props']['event']->title }}">
有时候,您甚至可能想要向根模板提供不会发送到JavaScript页面/组件的数据。这可以通过调用withViewData
方法来实现。
return Inertia::render('Event', ['event' => $event])
->withViewData(['meta' => $event->meta]);
在调用了withViewData
方法之后,您可以像通常访问Blade模板变量一样访问定义的数据。
<meta name="description" content="{{ $meta }}">
最大响应大小
为了启用客户端历史导航,在浏览器的历史状态中存储所有惯性服务器响应。然而,请记住,某些浏览器对保存在历史状态中的数据量设置了限制。
例如,Firefox有一个640k字符的大小限制,并且如果超过此限制,则会抛出一个“NS_ERROR_ILLEGAL_VALUE”错误。通常情况下,在构建应用程序时,这比您实际上需要的数据要多得多。
推荐文章: