You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Livewire分页切换每页条数无响应问题求助

解决Laravel Livewire多选项分页切换无响应问题

问题现象

切换每页条数(如从20改到50)时页面无变化,点击分页按钮后才会加载对应条数,但直接跳转到第2页。

核心原因

代码中使用了updatingPage()钩子,这个钩子仅在页码(page)变化时触发,而perPage变更时不会触发该方法,导致页码没有重置到第1页,同时分页数据也不会实时更新。

修复步骤

修改app/Livewire/Opportunities.php中的钩子方法,监听perPage的变更事件,触发时重置页码:

<?php

namespace App\Livewire;

use Livewire\Component;
use Livewire\WithPagination;
use App\Models\Item;

class Opportunities extends Component
{
    use WithPagination;

    public $search = '';
    public $perPage = 20; // 默认每页条数
    public $options = [20, 50, 100, 250]; // 可选每页条数

    protected $queryString = ['perPage']; // 保留perPage到URL

    // 替换原updatingPage方法,监听perPage字段更新
    public function updatingPerPage()
    {
        \Log::info('Per Page Updated: ' . $this->perPage);
        $this->resetPage(); // 切换每页条数时重置到第1页
    }

    public function render()
    {
        $items = Item::where('name', 'like', '%' . $this->search . '%')
            ->paginate($this->perPage);

        return view('livewire.opportunities', [
            'items' => $items
        ]);
    }
}

也可以使用通用的updating钩子,判断更新字段为perPage时执行重置:

public function updating($field)
{
    if ($field === 'perPage') {
        $this->resetPage();
    }
}

额外说明

  • 你的blade视图中wire:model="perPage"的绑定是正确的,无需修改。
  • resetPage()会将Livewire内部页码重置为1,避免切换每页条数后停留在原页码(比如原第2页,切换到50条后可能无对应数据或直接显示第2页内容)。

内容的提问来源于stack exchange,提问作者Hamza Javed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 03:02:30