Livewire组件视图中$search值不更新问题咨询
问题
我编写了一个简单的Searchbar Livewire组件:
<input type="text" wire:model="search"> {{ $search }}
通过@livewire('searchbar')加载该组件,组件类代码如下:
class Searchbar extends Component { public $search; public $results = []; public function updatedSearch() { info($this->search); $this->results = Client::search($this->search)->get(); } public function render() { return view('livewire.searchbar', [ 'results' => $this->results, ]); } }
在输入框中输入内容时,info()日志能正确记录$search的数值,添加protected $queryString = ['search'];后URL也能正常更新,使用dd()时视图会随其更新,但视图中的{{ $search }}始终无法同步更新。请问这是什么原因?
可能的原因及解决办法
- 视图缓存干扰:Laravel的视图缓存可能保留了旧版本,执行
php artisan view:clear清除缓存后重新测试。 - wire:model同步模式问题:默认
wire:model是懒加载(输入停止150ms后触发同步),如果需要实时同步显示,改成wire:model.live="search",输入时会立即同步组件属性和视图。 - 显式传递属性到视图:虽然Livewire公共属性默认会自动传入视图,但显式传递能避免潜在的同步问题,修改render方法:
public function render() { return view('livewire.searchbar', [ 'results' => $this->results, 'search' => $this->search, ]); } - 浏览器缓存问题:强制刷新页面(Ctrl+F5),清除浏览器本地缓存后再测试。
内容的提问来源于stack exchange,提问作者JanBoehmer
相关产品推荐
相关产品推荐

