如何阻止我的数据在渲染时消失?

How to stop my data from disappearing on render?

我正在开发一个项目,我使用 Livewire 创建将在视图中呈现的组件。基本的东西,但我遇到了这个奇怪的问题,几天来我一直找不到答案。当我在我的 blade 中加载一个组件时,它只弹出一秒钟然后消失,我猜是在所有内容呈现时。 在我的组件中,我通过路由加载 $tagName,然后我使用它来加载具有该标签的帖子,这是我组件的安装,我有 DD() 这个和所有 returns 正确的东西:

public function mount(Tag $tagName)
{   
    $this->tagName = $tagName;

    $this->posts = Post::has('image')->orderBy('created_at', 'desc')->skip($this->count)->take(7)
            ->whereHas('tags', function ($q) {
                $q->where('tag_id', $this->tagName->id); 
            })
            ->get();
    $this->tags = Tag::orderBy('created_at', 'desc')->get();
}

这是我的观点:

<div class="posts" wire:init="mount">
            @for ($i = 0; $i < count($posts); $i += 5)
                <div class="row" id="double">
                    @for ($j = $i; $j < min(count($posts), $i + 2); $j++)
                        <div class="card" wire:key="$loop->index()">
                            <img src="{{ asset('storage/images/' . $posts[$j]->image->name) }}" class="image"
                                width="544.03px" height="327.97px"/><br>
                            <div class="text">
                                <div class="title">
                                    <h5>{{ $posts[$j]->title }}</h5>
                                    <p>by {{ $posts[$j]->admin->first_name }}/
                                        {{ date('d-m-Y', strtotime($posts[$j]->created_at)) }}</p>
                                </div>
                            </div>
                        </div>
                    @endfor
                </div>
                @if ($j >= count($posts))
                    @break
                @endif
                <div class="row" id="triple">
                    @for (; $j < min(count($posts), $i + 5); $j++)
                        <div class="card" wire:key="$loop->index()">
                            <img src="{{ asset('storage/images/' . $posts[$j]->image->name) }}" class="image"
                                width="356.9px" height="327.97px"><br>
                            <div class="text">
                                <div class="title">
                                    <h5>{{ $posts[$j]->title }}</h5>
                                    <p>by {{ $posts[$j]->admin->first_name }}/
                                        {{ date('d-m-Y', strtotime($posts[$j]->created_at)) }}</p>
                                </div>
                            </div>
                        </div>
                    @endfor
                </div>
            @endfor
            @if ($message == null)
                <button type="button" id="load_more" wire:click="$emit('loadMoreData')">
                    CARICA ALTRO
                </button>
            @else
                <p class="pb-5 mb-5">{{ $message }}</p>
            @endif
        </div>

此外,我的路线只是 Route::view('/blog/{tagName}', 'pages.blog-tags');,其中我有多个加载的组件,上面 blade 的 link 是:

@livewire('blog-page.display-tag', ['tagName' => \Illuminate\Support\Facades\Route::getCurrentRoute()->parameters['tagName']])

我查看了 Livewire 文档和线程,例如 https://laracasts.com/discuss/channels/livewire/why-is-the-section-of-my-view-disappears-on-render,但我似乎无法修复它。我的意见是罪魁祸首是 wire:key="$loop->index()" ,我已经尝试过索引,$posts[j],lang{{ $loop->index }},所以如果您有任何想法请告诉我!提前致谢!

我终于明白了,所以我完全没有必要使用 wire:key,我正确地渲染了变量,它们应该可以自己工作。也没有必要 wire:init 在父 .

既然我找到了答案,我会把它留给 mods 是否应该删除它或留给可能像我一样被困在这个问题上的其他人。