借助react-laravel
您将能够直接从 Blade 视图中使用 ReactJS 组件,并具有可选的服务器端渲染,并且由于 JavaScript 不显眼,因此可以通过 React 在客户端上使用它们。
重要的是要知道react-laravel
间接依赖于 v8js PHP 扩展。
您可以在这里查看如何安装它:如何安装 v8js。
将composer.json
的minimum-stability
设置为dev
,添加以下内容:
“最低稳定性”:“开发”
然后运行:
$ 作曲家需要 talyssonoc/react-laravel:0.11
之后,您应该将其添加到 Laravel 应用程序的config/app.php
文件中的提供程序中:
'ReactReactServiceProvider'
然后运行:
php artisan 供应商:发布
react.php
文件将位于应用程序的config
文件夹中。
安装和配置后,您将能够在视图中使用@react_component
指令。
@react_component
指令接受 3 个参数:
@react_component(<组件名称>[, props, options]) //示例 @react_component('Message', [ 'title' => 'Hello, World' ], [ 'prerender' => true ]) // 使用命名空间组件的示例 @react_component('Acme.Message', [ 'title' => 'Hello, World' ], [ 'prerender' => true ])
componentName
:是保存组件的全局变量的名称。 使用命名空间组件时,您可以使用点符号作为组件名称。
props
:将传递给组件的props
的关联
options
:可以传递给react-laravel
的选项关联数组:
prerender
:告诉react-laravel在服务器端渲染您的组件,然后将其安装在客户端。默认为true 。
tag
:保存组件的元素的标签。默认为'div' 。
html 属性:将添加到组件的包装元素中的任何其他有效的 HTML 属性。示例: 'id' => 'my_component'
。
您的所有组件都应该位于public/js/components.js
内(您可以对其进行配置,请参见下文)并且是全局的。
您必须在视图中包含react.js
、 react-dom.js
和react_ujs.js
(按此顺序)。您可以使用 laravel-elixir 将这些文件连接在一起。
react-laravel
提供了 ReactJS 安装和react_us.js
文件,安装react-laravel
并运行后,它们将位于public/vendor/react-laravel
文件夹中:
$ php artisan 供应商:发布 --force
要使用由react-laravel
提供的文件和你的components.js
文件,请将其添加到你的视图中:
<script src="{{ asset('vendor/react-laravel/react.js') }}"></script> <script src="{{ asset('vendor/react-laravel/react-dom.js') }}"></script> <script src="{{ asset('js/components.js') }}"></script> <script src="{{ asset('vendor/react-laravel/react_ujs.js') }}"></script>
如果您将使用与react-laravel提供的版本不同的版本(请参阅composer.json
),则必须对其进行配置(请参阅下文)。
您可以在config/react.php
文件中将设置更改为react-laravel
:
返回 ['source' => 'path_for_react.js','dom-source' => 'path_for_react-dom.js','dom-server-source' => 'path_for_react-dom-server.js','组件' => ['path_for_file_containing_your_components.js'] ];
所有这些都是可选的。
source
:默认为public/vendor/react-laravel/react.js
。
dom-source
:默认为public/vendor/react-laravel/react-dom.js
。
dom-server-source
:默认为public/vendor/react-laravel/react-dom-server.js
。
components
:默认为public/js/components.js
。此处可以指定多个组件文件。
您的components.js
文件也应该包含在您的视图中,并且所有组件都必须位于window
对象中。
这个包的灵感来自于react-rails。