Я пытаюсь отправить событие в крючке жизненного цикла, но входит в бесконечную петлюPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Я пытаюсь отправить событие в крючке жизненного цикла, но входит в бесконечную петлю

Сообщение Anonymous »

Добрый день! Я внедряю Livewire в своей системе ERP, и я хотел бы поделиться проблемой, с которой я сталкиваюсь. Эти выбранные продукты должны сохраняться даже при обновлениях представления (например, при пневматизации или выполнении поиска). Чтобы справиться с этим, у меня есть следующее свойство: < /p>
public array $selectedProducts = [];< /code>
Я пытаюсь заполнить его, используя следующую логику: < /p>
public function rendering(): void
{
$this->dispatch('getMarkedProducts');
}
< /code>

Это отправляет событие браузера от PHP. Затем на фронте: < /p>

$wire.on('getMarkedProducts', () => {
$wire.dispatch('updateSelectedProducts', {
selected: Array.from(
document.querySelectorAll('.integration-checkbox:checked')
)
.map(cb => cb.value)
});
});

< /code>

Этот слушатель собирает все проверенные флажки и отправляет другое событие обратно на php. < /p>
#[On('updateSelectedProducts')]
public function updateSelectedProducts(array $selected): void
{
$this->selectedProducts = array_values(
array_unique(
array_merge(
$this->selectedProducts,
$selected
)
)
);
}
< /code>

Проблема заключается в том, что этот метод слушателя, по-видимому, запускает повторный рендеринг компонента, вызывая бесконечный цикл. < /p>
Любые советы или предложения будут высоко оценены. Спасибо за ваше время!


Подробнее здесь: https://stackoverflow.com/questions/797 ... nto-an-inf
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»