编程

在带有 MingleJS 的 Livewire 应用中使用 Vue 或 React 组件

550 2024-05-15 04:08:00

MingleJS 可用于在 Livewire 组件或 Filament 应用中使用 Vue 和 React 组件。该包由 Joao Patricio 创建,对于在登录页及你想使用 Vue 或 React 的复杂组件很有用。它也可以作为一种增量方式,在 Vue 或 React 生态系统中使用用 Livewire 或使用第三方组件。

MingleJS Demo 组件
MingleJS 的工作原理是在服务器端渲染一个 <div>,然后在客户端挂载一个组件。服务器端 Livewire 组件渲染每个 JS 组件,因此可以在与 Livewire 组件隔离的前端获得 JavaScript 交互。此外,后端可以将数据传递给前端可用的组件。

namespace App\Livewire;
 
use Ijpatricio\Mingle\Concerns\InteractsWithMingles;
use Ijpatricio\Mingle\Contracts\HasMingles;
use Livewire\Component;
 
class ChatApp extends Component implements HasMingles
{
    use InteractsWithMingles;
 
    public function component(): string
    {
        return 'resources/js/ChatApp/index.js';
    }
 
    public function mingleData()
    {
        return [
            'message' => 'Message in a bottle 🍾',
        ];
    }
 
    // ...
}

mingle 组件包括一个 Livewire 组件,该组件使用 InteractisWithMingles 特性、一个胶水 JavaScript 文件和前端组件文件。下面是一个使用 React 的 Mingle 组件的示例:

// resources/js/ChatApp/index.js
import mingle from '@mingle/mingleReact'
import ChatApp from './ChatApp.jsx'
 
mingle('resources/js/ChatApp/index.js', ChatApp)
 
// resources/js/ChatApp/ChatApp.jsx
import React from 'react'
 
function ChatApp({wire, ...props}) {
 
    const message = props.mingleData.message
 
    console.log(message) // 'Message in a bottle 🍾'
 
    wire.doubleIt(2)
        .then(data => {
            console.log(data) // 4
        })
 
    return (
        <div>
            {/* <!-- Create something great! --> */}
        </div>
    )
}
 
export default ChatApp

更多

要开始使用 MingleJS,请跳转到 MingleJS 文档。