Если это функция - то метод, если это переменная содержащая значение, то свойство.
var o = {x: function(){}}
? :)const onInputCallBack = useCallback((files) => {
// ....
if( files[0].size > 150 ){
return 'Недопустимый размер'
}
}
removeEventListener
убрал предыдущий обработчик, ему этот самый обработчик надо передать, а не новую функцию, с виду похожую на него. useForm
, но могу предположить, что раз часть шаблона с ...register
становится скрыта, то useForm
логично считает, что она нафиг не нужна, и очищает всё с ней связанное.const fileField = register('file', { validate: (e) => onInputCallBack(e) } );
....
return (
...
<input type="file" id={id} {...fileField}/>
removeEventListener
сработал ему надо передать ссылку на существующий обработчик, как это делает автор поста, а не новосозданную анонимную функцию. {
let controller = new AbortController();
let i = 0;
async function updateMessages() {
const index = i++;
console.log(index, 'started updateMessages');
controller.abort();
console.log(index, 'abort called for previous AbortController');
controller = new AbortController();
controller.signal.addEventListener('abort', () => {
console.log(index, 'aborted')
});
console.log(index, 'created new AbortController');
console.log(index, 'requset start');
let response = await fetch("http://localhost:3000/messages", {signal: controller.signal});
console.log(index, 'requset headeers fetched');
let messages = await response.json();
console.log(index, 'requset json fetched');
counter = messages.length;
console.log(index, 'counter set');
let container = document.getElementById("container");
container.innerHTML = "";;
console.log(index, 'innerHTML cleaned');
console.log(index, 'renderMessages calling');
renderMessages(messages);
console.log(index, 'renderMessages called');
}
updateMessages()
updateMessages()
updateMessages()
}
1. такой вариант даже менее многословен чем первый, из-за отсутствия обращения к объекту, если вопрос в этом;
2. он создаст все равно только один объект, в зависимости от if ветки;
3. он быстрее будет работать на v8(добавление свойств в объект, которых изначально не было там затратное) - но это только на случай миллионов вызовов.
В любом случае перегрузки - это всегда компромисс, прям совсем красиво не сделать - иначе тебе бы собственно и не потребовались перегрузки. Всё что тебя должно заботить - это фактическое соответствие результата перегруженным типам.
P.S. Если вместо хипстерской стрелки использовать нормальную функцию, то можно перегрузки писать так:
что на мой взгляд куда нагляднее и удобнее.