Выполните вызов функции перед любым триггером в Javascript

#javascript #reactjs #function #onclick

Вопрос:

Я хочу создать кнопку с помощью обработчика onclick, который будет вызывать функцию один раз перед любым триггером.

В React я могу сделать вот так

 <button onClick={clickHandler()}></button>
 

Можно ли сделать то же самое в чистом Javascript?

Комментарии:

1. <кнопка onclick=»myFunction()»>Нажмите на меня<кнопка onclick=»myFunction()»></кнопка> И для выполнения одного раза в другом месте просто вызовите myFunction()… один раз.

Ответ №1:

Да, функция просто должна вернуть другую.

 let button = /* your button */;
button.addEventListener('click', (function(){
    /* logic before any trigger */
    return function(){
        /* logic for every trigger */
    }
})());
 

В качестве альтернативы вы просто запускаете любой код перед подключением обработчика:

 let button = /* your button */;
/* logic before any trigger */
button.addEventListener('click', function(){
    /* logic for every trigger */
});
 

Та же логика для обоих сценариев:

 let button = /* your button */;
function myButtonLogic(){
   /* logic for everything */
}
myButtonLogic();
button.addEventListener('click', myButtonLogic);
 

Комментарии:

1. Спасибо, что ответили на мой вопрос. Я уже делал альтернативу раньше, но проблема в том, что логика та же, так есть ли какой-нибудь эффективный способ сделать это?

2. Если это то же самое, то лучше просто поместить эту логику в функцию, вызвать ее перед обработчиком, а затем просто прикрепить обработчик.