I got the same problem. When livewire refresh dom, splide is not remounted. wire:ignore will works only if you don't have to refresh parts of content. I resolve this by emiting an event when variable change :
public function updated($name, $value){
if(in_array($name , ['var1', 'var2', '...'])){
$this->emit('reinitSplide');
}
}
And then in JS :
let message_splide = new Splide( '.splide', message_splide_options ).mount();
Livewire.on('reinitSplide', () => {
if (message_splide) {
message_splide.destroy();
}
message_splide = new Splide('.splide', message_splide_options ).mount();
});
You can also use the native event at all refresh :
let message_splide = new Splide( '.splide', message_splide_options ).mount();
document.addEventListener('livewire:update', function () {
if (message_splide) {
message_splide.destroy();
}
message_splide = new Splide('.splide', message_splide_options ).mount();
});