我一直在尋找類似上面的問題,但我找不到,所以我要做一個
我的問題是,當我使用 Laravel Livewire 進行非常簡單的分頁時,第一頁看起來很好,但是當我單擊“下一頁/頁碼”時,結果就消失了,即使還有更多的結果要顯示,我不管我怎么嘗試,我都完全不知道。
如您所見,簡單的分頁效果很好,下面有下一個和上一個按鈕以及一個非常大的下一個和上一個圖片
但是當我點擊下一頁或頁碼時,結果就消失了,結果總數甚至變成了0
這是我的組件代碼:
namespace App\Http\Livewire;
use Livewire\Component;
use Illuminate\Http\Request;
use DB;
use Livewire\WithPagination;
class Category extends Component
{
use WithPagination;
public function render(Request $request)
{
$id = $request->id;
$product_count = DB::table('product')->where('category_id', $id)->count();
$page = $request->page ?? 1;
$product_all = DB::table('product')->where('category_id', $id)->paginate(3);
return view('livewire.category',[
'product_all' => $product_all,
'product_count' => $product_count,
'page' => $page,
]);
}
}
這是我的視圖代碼:
<div class="row">
@foreach ($product_all as $product)
<div class="col-lg-4 col-md-6 col-12 mt-4 pt-2">
@php
product($product);
@endphp
</div>
@endforeach
<!-- PAGINATION START -->
@if ($product_all instanceof \Illuminate\Pagination\LengthAwarePaginator)
{{ $product_all->links() }}
@endif
<!-- PAGINATION END -->
</div>
還有一個小通知,我嘗試在沒有 livewire 的情況下進行分頁(只是普通的 Laravel 分頁)并且它作業得非常好,這就是為什么我對正在發生的事情一無所知
我已經包含了 livewire @livewireStyles 和 @livewireScripts,我在其他任何地方都找不到答案,因為我沒有看到任何與我的問題相符的問題,而且我對 livewire 有點陌生
uj5u.com熱心網友回復:
我認為您的問題與 livewire 組件渲染方法上的請求引數有關,一旦重新渲染上的 livewire 無法訪問請求值,直到下一次瀏覽器重繪 。
public function render(Request $request)
相反,使用 livewire 屬性將 id 和頁面系結到 livewire 可以在重新渲染時讀取的值
@livewire('some-component', ['category_id' => $parent_category_id, 'page' => $parent_page_value])
像上面一樣,livewire 將此值系結到自身屬性并在重新渲染時從中讀取
public $category_id, $page;
public function render()
{
$product_count = DB::table('product')->where('category_id', $this->category_id)->count();
$product_all = DB::table('product')->where('category_id', $this->category_id)->paginate(3);
return view('livewire.category',[
'product_all' => $product_all,
'product_count' => $product_count,
'page' => $this->page,
]);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/380513.html
