Laravel livewire 在不在同一页面的两个组件之间传递数据

Laravel livewire passing data between two components not in the same page

我是第一次使用 Laravel 和 Livewire,如果问题很愚蠢,请见谅。

我已阅读 Livewire 文档 https://laravel-livewire.com/docs/2.x/events

Livewire 组件可以通过全局事件系统相互通信。只要两个 Livewire 组件在同一个页面上,它们就可以使用事件和侦听器进行通信。

我有两个需要通信的数据表,但它们不在同一页面上。

是否有可能的解决方法或解决方案? 非常感谢。

路由模型绑定就是解决这个问题的方法。如果你在一个组件中加载,例如从一行 User table 中加载 id,你可以重定向到另一个通过路由绑定该 id 的组件。 用户 Table blade

<td>
  <a href="{{ route('user.activity', ['id' => $user->id]) }}">View Activity</a>
<td>

web.php

Route::get('activity/user/{id}', UserActivityComponent::class)->name('user.activity');

UserActivityComponent 一旦您点击或通过标签访问它(在我的示例中),它就会被渲染。所以,就像文档说的,你可以这样做

class UserActivityComponent extends Component
{
  public $user;

  public $name;
  public $email;
  
  //....
  public function mount($id)
  {
     $this->user = User::find($id);
     $this->name = $this->user->name;
     $this->email = $this->user->email;
  }
  public function render()
  {
     return view('user-activity-component');
  }  
}

并在 UserActivityComponent blade 中部署您想要在此显示的所有内容