嵌套组件 Livewire

Nesting Components Livewire

我有一个 运行 Table 显示这个

ID   Name   Details  (modal button)

每当单击模态按钮时,我希望它调用另一个 livewire 组件,但是,我需要传递我拥有的现有 table 列表的 ID

每当单击模态按钮时,这是我的子组件。

public $run;

public function mount($id) 
{
    $this->run = $id;    
}

public function render()
{
    $runs = Runners_List::where('run_list_id', $this->run)->get();

    return view('livewire.runners-list', [
        'runs' => $runs,
    ]);
}

在我的模式中,我有这个

@livewire('runners-list', ['id' => $viewRun])

$viewRun 是我的主要组件列表中的 ID 或每行的 ID

我需要帮助如何将 $viewRun(或我的主要组件的 ID)传递给上面的子组件。

这可能吗?谢谢

更新::

如果我用一个值替换 $viewRun,它就能够获取数据。

@livewire('runners-list', ['id' =>  $viewRun ] ) 

成功了

<livewire:runners-list :id="$viewRun" :key="$viewRun">

你走在正确的道路上。 Livewire 会自动将参数分配给匹配的 public 属性。根本不需要使用 mount() 方法。

此外,如果您在循环中使用 livewire 组件,请记住这一点。与 VueJs 类似,如果您在循环内渲染组件,Livewire 无法跟踪哪个是哪个。为了解决这个问题,livewire 提供了一种特殊的“键”语法。

@livewire('runners-list', ['run' =>  $viewRun], key($viewRun))
public $run;

public function render()
{
    return view('livewire.runners-list', [
        'runs' => Runners_List::where('run_list_id', $this->run)->get(),
    ]);
}

此外,我建议不要在 class 名称中使用下划线,而是将其重命名为 RunnersList