удаления разных форм: одна удаляет по idшнику, другая по лейблу, это понятно. Как можно объединить их в одну функцию по конструкции if else? На подобии, если у нас форма с инпутами, то удаляем по idшнику, если с лейблом, то по лейблу. Тут скорее вопрос по JS, однако в чате по JS никто не знает про хуки реакта. Хелп
Заранее спасибо каждому за отве
setShowForm((prev) => prev.filter((x) => ( (x.id !== undefined && x.id === formToDelete) || (x.label !== undefined && x.label === formToDelete) )));
const removeForm = (formToDelete: number | string) => typeof formToDelete === 'string' : removeMainForm(formToDelete) : removeAdditionalForm(formToDelete);
как вариант проверять если formtodelete number то одно else другое, либо вторым параметром передавать поле по какому фильтровать
Для автоматизации можно провернуть следующее: необязательно городить конструкцию с условиями, все что нужно сделать с данной функций это указать при вызове по какому полю фильтровать входящее значение, ниже на скрине приведен код где таким образом работает хук в реакте(самописный).
const removeForm = (formToDelete: string | number) => { if (typeof formToDelete === 'string') { setOrderItem( orderItem.filter((x) => { return x.label !== formToDelete }) ) } else { setShowForm( showForm.filter((x) => { return x.id !== formToDelete }) ) } } Спасибо, работает данная конструкция. Но выглядит больше как говнокод. Попробую еще что - то
Просто не надо всё в 1 функцию скидывать. Оставь те две что были выше, и сделай новую, которая будет чисто оркестрировать сама какую из них вызвать
А зачем тебе 2 функции?
Обсуждают сегодня