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

Laravel 9 Blade无法向Vue 3组件传递数据求助

Vue 3中Laravel Blade向组件传值失效问题解决

我在Vue 2中可成功实现Laravel 9 Blade向组件传递数据,但切换到Vue 3后该功能失效,恳请提供帮助。

相关代码

Vue组件代码(test.vue)

<template>
    <p class="text-blue-600">The quick brown fox...</p>
            
    <div class="inline-flex justify-between w-full">
        <h1>{{ nodeGroups }} Hi</h1>
    </div>
</template>

<script>
export default{
    props:['nodeGroups'],

    mounted () {
        console.dir(this.nodeGroups)
    }
}
</script>

Vue实例挂载代码

import { createApp } from "vue";
import Welcome from "./components/test.vue";
createApp(Welcome).mount("#app");

Laravel Blade代码

<div id="app">
    <Welcome :nodeGroups="'abc'"></Welcome>
</div>

问题原因

Vue 3的挂载逻辑和Vue 2存在差异:你当前直接把Welcome组件作为根组件挂载到#app,这会导致#app内的Blade代码(包括<Welcome>标签)被根组件的模板完全替换,Blade里的传参自然无法生效。

解决办法

1. 修改Vue挂载代码,注册全局组件

将挂载代码改为先创建空的根应用,再注册Welcome组件,最后挂载:

import { createApp } from "vue";
import Welcome from "./components/test.vue";

// 创建空的根应用实例
const app = createApp({});
// 全局注册Welcome组件
app.component('Welcome', Welcome);
// 挂载到#app元素
app.mount("#app");

2. 可选:规范组件Props定义(非必须,但更健壮)

可以将组件的props从数组形式改为对象形式,增加类型校验:

export default{
    props: {
        nodeGroups: {
            type: String,
            required: false, // 根据需求设置是否必填
            default: ''
        }
    },

    mounted () {
        console.dir(this.nodeGroups)
    }
}

3. 传参注意事项

  • 如果传递字符串字面量,可以去掉冒号直接写:nodeGroups="abc",或者保留冒号用单引号包裹(你当前的写法:nodeGroups="'abc'"是正确的)。
  • 如果传递PHP变量,可以用Blade语法绑定::nodeGroups="{{ $yourPhpVariable }}"

这样修改后,Blade中的<Welcome>标签就能被Vue正确解析,传递的nodeGroups参数也能在组件中正常接收和使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:50:33