Array in Livewire component is reset when it is updated

I have 2 components, CastComparer and CastSearch. CastSearch are nested components within CastComparer.

Upon a certain action, the CastSearch component emits an event which CastComparer is listening for, called compare

I emit this event by doing $this->emit('compare', $this->selected);

This calls a function on my CastComparer component called makeComparison().

Below is my CastComparer component class

class CastComparer extends Component
    public $cast_members = [];

    protected $listeners = ['compare' => 'makeComparison'];

    public function render()
        return view('livewire.cast-comparer');

    public function makeComparison($id)
        array_push($this->cast_members, $id);

The issue I am having is, each time this is called the $cast_members array gets reset. So for example if 5 of my CastSearch components all emitted, i’d expect $cast_members array to have this

["test0", "test1", "test2", "test3", "test4"]

Instead the array seems to reset each time so I only have after the fifth emit:


$cast_members also has no interaction with any views so that shouldn’t affect it.

Why is it when I am emitting this event, the data in $cast_members is not retained?

Livewire version: v2.2.9
Laravel version: 8