【问题标题】:Nesting Components Livewire嵌套组件 Livewire
【发布时间】:2023-04-06 16:10:01
【问题描述】:

我有一个显示这个的运行表

ID   Name   Details  (modal button)

每当单击模态按钮时,我希望它调用另一个 livewire 组件,但是,我需要传递我拥有的现有表列表的 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 ] ) 

【问题讨论】:

    标签: laravel laravel-livewire


    【解决方案1】:

    让它工作

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

    【讨论】:

      【解决方案2】:

      你走在正确的道路上。 Livewire 会自动将参数分配给匹配的公共属性。根本不需要使用 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(),
          ]);
      }
      

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

      【讨论】:

        猜你喜欢
        • 2021-04-20
        • 1970-01-01
        • 2022-11-17
        • 1970-01-01
        • 2021-11-19
        • 2017-12-31
        • 2021-09-14
        • 2021-10-23
        • 1970-01-01
        相关资源
        最近更新 更多