Bootstrap resetPage() livewire 后缺少下拉按钮 2.x

Bootstrap button dropdown missing after resetPage() livewire 2.x

早上好, 使用模态 bootstrap 4.x 更新数据后出现问题,下拉按钮一直消失。 我正在使用 laravel 7.x 和 livewire 2.x.

button not show for on or two data row

i 拆分模态组件和列表 tables 组件。 这是代码:

table 列出数据组件:

<div class="p-dashboard">
<div wire:ignore>
@include('template.components.sidebar-admin')
</div>
<div class="p-dashboard-container">
    <div wire:ignore>
    @include('template.components.navbar-admin')
    </div>
    <div class="p-dashboard-content">
        <div class="card-box">
            <div class="card-box-header pt-0">
                <div class="row align-items-end">
                    <div class="col">
                        <div class="form-group mb-0">
                            <div class="input-group ">
                                <div class="input-group-append ml-0">
                                  <span class="input-group-text"><i class="bi bi-search"></i></span>
                                </div>
                                <input type="text" wire:model.debounce.300ms="search" class="form-control" placeholder="Search" />
                            </div>
                        </div>
                    </div>
                    <div class="col-2">
                        <div class="form-group mb-0">
                            <label for="">Start Date</label>
                            <input type="date" wire:model.debounce.300ms="dateStart" class="form-control" placeholder="Search" />
                        </div>
                    </div>
                    <div class="col-2">
                        <div class="form-group mb-0">
                            <label for="">End Date</label>
                            <input type="date" wire:model.debounce.300ms="dateEnd" class="form-control" placeholder="Search" />
                        </div>
                    </div>
                    <div class="col-2">
                        <div class="form-group mb-0">
                            <label for="">Level</label>
                            <select class="form-control" wire:model="filterLevel" name="" id="">
                                <option value="">Select Level</option>
                                <option value="1">1</option>
                                <option value="2">2</option>
                                <option value="3">3</option>
                            </select>
                        </div>
                    </div>
                </div>
            </div>
            <div wire:ignore.self class="card-box-body">
                <div class="table-hold">
                    <table class="table table-striped">
                        <thead>
                            <tr>
                                <th wire:click="sortBy('name')" style="cursor:pointer;text-align:center;">
                                    Full Name
                                    @include('components.sort-icon',['field' => 'name'])
                                </th>
                                <th wire:click="sortBy('email')" style="cursor:pointer;text-align:center;">
                                    Email
                                    @include('components.sort-icon',['field' => 'email'])
                                </th>
                                <th wire:click="sortBy('telepon')" style="cursor:pointer;text-align:center;">
                                    Phone Number
                                    @include('components.sort-icon',['field' => 'telepon'])
                                </th>
                                <th wire:click="sortBy('created_at')" style="cursor:pointer;text-align:center;">
                                    Date Joined
                                    @include('components.sort-icon',['field' => 'created_at'])
                                </th>
                                <th wire:click="sortBy('level')" style="cursor:pointer;text-align:center;">
                                    Level
                                    @include('components.sort-icon',['field' => 'level'])
                                </th>
                                <th wire:click="sortBy('status')" style="cursor:pointer;text-align:center;">
                                    Status
                                    @include('components.sort-icon',['field' => 'status'])
                                </th>
                                <th>
                                    Actions
                                </th>
                            </tr>
                        </thead>
                        <tbody>
                            @forelse ($users_data as $item)
                            <tr>
                                <td>
                                    @if(isset($item->picture))
                                    <img class="avatar rounded-circle" src="{{ asset('storage/'.$item->picture) }}" alt="{{ $item->name }}">
                                    @else
                                    <img class="avatar rounded-circle" src="https://pbs.twimg.com/media/BduTxWnIUAAKT_5.jpg" />
                                    @endif
                                    &nbsp;{{ $item->name }}
                                </td>
                                <td>{{ $item->email }}</td>
                                <td>
                                    @if(isset($item->telepon))
                                    +{{ $item->telepon }}
                                    @else
                                    -
                                    @endif
                                </td>
                                <td>{{ date('d M Y', strtotime($item->created_at)) }}</td>
                                <td>{{ $item->level }}</td>
                                <td>
                                    @if ($item->status == 13)
                                    <span class="badge badge-pill badge-green-soft px-3 py-2 font-weight-normal">
                                        <i class="bi bi-x-circle-fill mr-1"></i>
                                        Ban
                                    </span>
                                    @elseif ($item->status == 666)
                                    <span class="badge badge-pill badge-red px-3 py-2 font-weight-normal">
                                        <i class="bi bi-stop-fill mr-1"></i>
                                        Permanent Ban
                                    </span>
                                    @else
                                    <span class="badge badge-pill badge-green px-3 py-2 font-weight-normal">
                                        <i class="bi bi-check-circle-fill mr-1"></i>
                                        Active
                                    </span>
                                    @endif
                                </td>
                                <td>
                                    <div class="dropdown">
                                        <button class="dropdown-toggle btn btn-link" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                                            <i class="bi bi-gear-fill text-muted"></i>
                                        </button>

                                        <div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
                                            @if($item->status == 13 || $item->status == 666)
                                            <a class="dropdown-item" wire:click="unbanUser({{ $item->id }})">Unban</a>
                                            @else
                                            <a class="dropdown-item" wire:click="banUser({{ $item->id }})">Ban</a>
                                            @endif
                                            <a class="dropdown-item" wire:click="deleteUser({{ $item->id }})">Delete</a>
                                            <a class="dropdown-item" wire:click="banPermanentUser({{ $item->id }})">Permanent Ban</a>
                                        </div>
                                    </div>
                                </td>
                            </tr>
                            @empty
                            <tr>
                                <td colspan="7" align="center">
                                    <b>Belum ada data users.</b>
                                </td>
                            </tr>
                            @endforelse
                            <tr>
                                <td colspan="7">
                                    {{ $users_data->links('components.custom-paging') }}
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</div>

模态组件:

<div wire:ignore.self class="modal fade" id="DeleteUser" tabindex="-1" aria-labelledby="AddCurrencyLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-sm">
  <div class="modal-content">
    <div class="modal-body py-md-5 px-md-4">
        <button type="button" class="close" wire:click="cancelModal">
            <span aria-hidden="true"><i class="bi bi-x"></i></span>
        </button>

        <div class="heading flex align-items-center mb-5">
            <div class="pr-3">
                <div class="icons">
                    <i class="bi bi-text-paragraph"></i>
                </div>
            </div>
            <div>
                <h4>Delete User</h4>
            </div>
        </div>

        @if(isset($currencies['currency_name']))
        Apakah Anda yakin ingin menghapus data {{ $users['name'] }} ini?
        @else
        Apakah Anda yakin ingin menghapus data ini?
        @endif

        <div class="row pt-5">
            <div class="col">
                <button class="btn btn-outline-secondary btn-block" type="button" wire:click="cancelModal">Cancel</button>
            </div>
            <div class="col">
                @if(isset($users_id))
                <button wire:click="deleteData" class="btn btn-primary btn-block" type="button">Submit</button>
                @endif
            </div>
        </div>
    </div>
  </div>
</div>

我的代码有什么问题吗? 请帮我。今天是我寻找解决方案的第三天

您是否尝试过使用 wire:key 指令跟踪根元素(在您的例子中是按钮)???

<div class="dropdown" wire:key="actions-button-{{ $item->id }}">
   <button .....

???

否则,我建议尝试将 table 项的 td 创建为嵌套组件,例如

@forelse ($users_data as $item)
<tr>
  @livewire('nested-item-td', ['item' => $item], key('nested-item-'.$item->id))
<.tr>
...

然后是 nested-item-td 组件 blade

<td>
 .....
</td>