将数据从 Laravel 传递到 Vue 组件的最佳实践

Posted

技术标签:

【中文标题】将数据从 Laravel 传递到 Vue 组件的最佳实践【英文标题】:Best practice to pass data from Laravel to Vue component 【发布时间】:2018-12-24 06:33:57 【问题描述】:

这是我的刀片代码

<div id="app">
  <Testcomponent bam-wam="ham" />
</div>

这是我的 VueJS 组件代码

<script>
    export default 
        name: "ExampleComponent",
        props: [
            'bamWam'
        ],
        data () 
            return 

            ;
        ,
        created() 
            console.log(this.bamWam);
        
    
</script>

问题是

这段代码运行良好,但我想问什么更好使用 Axios 和 Vuex 从我的 Laravel 应用程序中获取数据 或者只是 像我在这段代码中所做的那样传递数据抛出道具?

【问题讨论】:

两者都可以,这真的取决于用例。如果你使用 Laravel 来生成所有的视图并且只是让 vue 组件分布在整个项目中,那么这个实现可能就很好了。如果您尝试使用 vue 构建整个前端或 SPA,并更多地使用 Laravel 作为后端 API,那么请使用 AJAX。 谢谢您的帮助..您可以将其发布为答案 这不是一个真正的答案,这只是我的意见。此处不鼓励最佳实践/自以为是的问题和答案。我很高兴能帮上忙,不过我可能会删除这个问题。 【参考方案1】:

通过 props 传递数据是最好的方式。

<my-component my-data="yourData"></my-component>

如果你想使用 laravel 变量来获取刀片数据,那么,

<my-component my-data="' $data.id '"></my-component>

<my-component :my-data="'!! json_encode($data) !!'"></my-component>

尽量避免api调用。它将减少对服务器的请求总数并暴露更少的 api 端点。

【讨论】:

谁给这个家伙投了反对票?这应该被接受为答案。不完美,但这是完成工作的一种方式。 如果您看到您的数据开始显示而不是发送到您的组件,请尝试使用:my-data=" json_encode($data) " source【参考方案2】:

如果数据可用于添加组件的视图。那么将 php 数组从 laravel 传递到 vue 组件的最佳方法是使用 json 编码,如下所示:

<my-component :needed-data='@json($laravelCollection)'></my-component>

这将使您可以轻松地对 Vue 控制器中的 php 数组执行操作,就好像它是一个 JS 对象一样。请记住,@json 必须使用单引号。

对于简单的字符串,您可以直接将其作为道具传递而无需编码。

这种方法比专门为这个组件创建一个新的 API 要好。

【讨论】:

【参考方案3】:

这是唯一适合我的方法:

<my-component :data=" $collection "></my-component>

JSON 解析解决方案以 html 格式打印数据。

【讨论】:

以上是关于将数据从 Laravel 传递到 Vue 组件的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

无法将数据从刀片传递到 vue(Laravel 5.3)

如何将数组从 Laravel Blade 传递到 Laravel 6/Vue 2.6 中的 Vue 组件。*

如何将分页数据和数组从控制器 laravel 传递到 vue 组件?

如何将数据从 laravel 传递到 Vue Router?

Axios 响应数据未加载到 Laravel 中的 Vue 组件上

如何将 Laravel 数据(json)传递给 Vue 组件