You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8 通过Props传递Blade数据至Vue 3时控制台显示undefined的问题排查

解决Laravel Blade向Vue 3组件传递Props显示undefined的问题

我帮你排查了代码里的问题,主要有两个核心点需要修正,咱们一步步来搞定:

1. 组件不在Vue实例的管辖范围内

看你的index.blade.php,<example-component>是放在<div id="app">外面的,但Vue实例是挂载到#app这个元素上的——Vue只会处理挂载元素内部的组件,外面的组件根本不会被Vue识别,自然拿不到props。

修正后的index.blade.php需要把组件移到#app容器内:

@extends('layouts.app')
@section('content')
<div id="app">
  <!-- 把组件放到Vue管辖的容器内 -->
  <example-component :course="@json($course)"></example-component>
</div>
<script src="{{asset('js/course/app.js')}}"></script>
@endsection

2. Props传递的格式错误

你之前的两种写法都存在格式问题:

  • 第一种<example-component :course="{{ $course }}"></example-component>:直接输出PHP对象会变成类似[object Object]的字符串,不是合法的JSON,Vue无法解析成可用的对象。
  • 第二种<example-component course="{!! $course !!}"></example-component>:没有加冒号(v-bind语法糖)的话,传递的是纯字符串,而且直接输出对象也会得到错误的内容。

正确的做法是用Laravel自带的@json指令,把PHP对象/数组转成合法的JSON,同时配合冒号让Vue识别为JavaScript对象:

<example-component :course="@json($course)"></example-component>

额外注意:确保模型字段可被序列化

如果$course是Eloquent模型,记得在模型类里设置$visible属性(指定允许序列化的字段),或者检查$hidden属性有没有把需要传递的字段隐藏,避免因为字段被过滤导致数据为空。

修正完成后刷新页面,控制台应该就能正常打印出course数据了。

内容的提问来源于stack exchange,提问作者xMrViktorx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 13:42:28