【发布时间】:2021-03-16 11:14:17
【问题描述】:
我有一个livewire 组件,例如:
组件类:
class TestComponent extends Component
{
public $showFilter = true;
/*
|--------------------------------------------------------------------------
| Handle : Filter Button Click
|--------------------------------------------------------------------------
*/
public function handleFilterButtonClick() {
$this->showFilter = !$this->showFilter;
}
/*
|--------------------------------------------------------------------------
| Render
|--------------------------------------------------------------------------
*/
public function render()
{
return view('livewire.something');
}
}
刀片文件:
<div class="show-filter-btn" wire:click="handleFilterButtonClick">
hide / show filters
</div>
<div class="some-div">
@if($showFilter)
@livewire('search.side-bar', key(uniqid()));
@endif
</div>
<div style="flex-grow: 1"> {{-- ref={ function(element) { self._input = element; } } --}}
<div>
@livewire('search.pagination', [], key(uniqid()));
</div>
</div>
当我单击show-filter-btn 时,它将show/hide sidebar 组件,我使用uniqid() 为components 生成key(),因为如果我使用除此之外的任何东西(例如:@ 987654330@, sidebar-1234 等)它会抛出index.js:32 Uncaught (in promise) TypeError: Cannot read property 'fingerprint' of null 错误,我是livewire 的新手,所以我不太明白它是如何工作的,组件不是彼此相邻的,所以他们为什么还需要unique 键来识别对方?仅当有 loop 和 list 时才需要键
【问题讨论】:
标签: php laravel laravel-livewire