gpt4 book ai didi

php - 如何仅将加载状态应用于 livewire 中的特定组件

转载 作者:行者123 更新时间:2023-12-03 11:22:36 25 4
gpt4 key购买 nike

我在我的项目中使用 Laravel Livewire,我使用 wire:loading用于在单击时加载状态。我在 foreach 循环中迭代了所有任务,但加载状态适用于所有组件。这是代码。
enter image description here
Blade 文件
亚搏体育app:https://gitlab.com/tasklog/tasklog/-/blob/master/resources/views/livewire/home/tasks.blade.php

<button type="button" wire:click="togglePraise({{ $task->id }}, {{ $task->user->id }})">
👏
<span class="small text-black-50 font-weight-bold">
{{ $task->task_praise->count() }}
</span>
<div wire:loading wire:target="togglePraise">
Processing...
</div>
</button>
Controller 文件
亚搏体育app: https://gitlab.com/tasklog/tasklog/-/blob/master/app/Http/Livewire/Home/Tasks.php
public function togglePraise($id, $user_id)
{
if (Auth::check()) {
if (Auth::user()->id === $user_id) {
session()->flash('message', 'Forbidden!');

return;
}
$isPraised = TaskPraise::where([
['user_id', Auth::user()->id],
['task_id', $id],
])->count();
if ($isPraised === 1) {
TaskPraise::where([
['user_id', Auth::user()->id],
['task_id', $id],
])->delete();

return true;
} else {
TaskPraise::create([
'task_id' => $id,
'user_id' => Auth::user()->id,
]);

return true;
}
} else {
return session()->flash('message', 'Forbidden!');
}
}

最佳答案

我知道这个问题是在 v2 发布之前,但添加了 v2 的答案以供引用。
根据 Livewire docs如果您使用的是 v2,您可以在 wire:target 指令中指定操作及其参数。对于您的示例,它会是这样的:

wire:target="togglePraise({{ $task->id }}, {{ $task->user->id }})"

关于php - 如何仅将加载状态应用于 livewire 中的特定组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62976349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com