Проблема
Вам не хватает выражения лямбда .
Прямой вызов функции вызовет console.log()
, как только будет смонтирован компонент. Это распространенное заблуждение, связанное с синтаксисом.
Что происходит
Функция
onLoad={console.log('LOADED')}
вызывается, как только компонент монтируется, поскольку вы на самом деле вызываете console.log
, а не просто устанавливаете, какой function
должен вызываться при запуске события, в данном случае onLoad
.
Как это исправить
То, что вы хотите сделать, это ввести там лямбда-выражение, чтобы вы вызывали функцию, когда onLoad
действительно запущен.
<img src={image} alt="" onLoad={() => console.log('LOADED')}/>
Возможно, вы также захотите передать свойства события из события. Вы можете сделать это, введя переменную в лямбда-выражение:
<img onLoad={(event) => this.myHandleImageLoadEvent(event)} />
Где функция myHandleImageLoadEvent
является функцией, определенной в том же классе, и имеет событие в качестве входного параметра.