LiveWire: компонент не перезарядка при переключении маршрутов с тем же представлениемPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 LiveWire: компонент не перезарядка при переключении маршрутов с тем же представлением

Сообщение Anonymous »

Объяснение проблемы
Я использую Livewire с абстрактным базовым компонентом (

Код: Выделить всё

AbstractRecipeList
), которая обрабатывает общую логику, такую ​​как render (), и возвращает то же представление (

Код: Выделить всё

livewire.recipe-list
) для всех дочерних компонентов.
Дочерние компоненты:

[*]filteredRecipes.php
[*]savedRecipes.php
> /> < /ul>
Каждый из них возвращает различный базовый запрос в getbasequery (), но все они используют один и тот же вид лезвия. Навигация между страницами, такими как: < /p>

Код: Выделить всё

/users/profiles/1/liked

/users/profiles/1/saved
Если я попытаюсь перейти из/рецептов (маршрут для Filedrecipes.php ) к/пользователям/профилям/1/ Без загрузки, нет сброса Livewire - просто молчаливый переключатель в содержании.

Код: Выделить всё

abstract class AbstractRecipeList extends Component
{
use WithPagination;

public string $sort = 'popularity';

public function render()
{
$recipes = $this->getRecipes();
$recipes = $recipes->paginate(2)->withQueryString();

return view('livewire.recipe-list', [
'recipes' => $recipes
]);
}

abstract protected function getBaseQuery(): Builder;

protected function getRecipes(){
$query = $this->getBaseQuery()
->with(...)
->withCount(...);

return $this->applySorting($query);
}

public function applySorting($query)
{
return match ($this->sort){
'popularity' => $query->orderByDesc('savedCount')
// other cases
};
}
}

< /code>
filteredRecipes.php:
class FilteredRecipes extends AbstractRecipeList
{
public function mount(RecipeFilterRequest $request): void
{
// mount
}

public function getBaseQuery(): Builder
{
// Filter logic using URL parameters
$query = Recipe::when(...) // filter logic here

return $query;
}
}
< /code>
savedrecipes.php:
class SavedRecipes extends AbstractRecipeList
{
public function getBaseQuery(): Builder
{
return auth()->user()->savedRecipes()->getQuery();
}
}
< /code>
likedrecipes.php:
class LikedRecipes extends AbstractRecipeList
{
public function getBaseQuery(): Builder
{
return auth()->user()->likedRecipes()->getQuery();
}
}
< /code>
И когда мне нужно называть эти дочерние компоненты, я использую: < /p>





был бы благодарен за вашу помощь

Подробнее здесь: https://stackoverflow.com/questions/796 ... -same-view
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»