如何阻止我的数据在渲染时消失?
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 是否应该删除它或留给可能像我一样被困在这个问题上的其他人。
我正在开发一个项目,我使用 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 是否应该删除它或留给可能像我一样被困在这个问题上的其他人。