Изображения отображаются только с задержкой 1 секунда и затем setState

K & amp; R2 охватывает версию языка 1989/1990. В действующем стандарте ISO C, опубликованном в 1999 году 2011 года, исключается правило «неявное int» и требуется видимое объявление для любой функции, которую вы вызываете. Компиляторы не обязательно применяют это по умолчанию, но вы должны иметь возможность запрашивать более строгие предупреждения - и вам определенно нужно.

Пример: стандартная функция sqrt() объявлена ​​в <math.h>:

double sqrt(double);
.

Пример: стандартная функция sqrt() объявлена ​​в <math.h>:

double sqrt(double);
]

Если вы пишете вызов без , требуемый #include <math.h>:

double x = 64.0;
double y = sqrt(x);

компилятор C90 будет предположить , что sqrt вернется int - и он сгенерирует код для преобразования результата с int в double. Результатом будет мусор или, возможно, сбой.

(Вы могли вручную объявить sqrt самостоятельно, но это неправильное решение.)

So не делайте этого. Всегда включайте любой заголовок, необходимый для любой вызываемой вами функции. Вы можете уйти с вызовом необъявленной функции, если она возвращает int (и если ваш компилятор не применяет строгую семантику C99 или C11, и если выполняется несколько других условий), но для этого нет веских оснований.

Понимание правила «неявного int» по-прежнему полезно для понимания поведения старого или плохо написанного кода, но вы никогда не должны зависеть от него в новом коде.

4
задан Duc Anh Pham 18 January 2019 в 07:32
поделиться

1 ответ

Используйте метку onLoad prop of image для обработки загруженного состояния:

...
handleImgLoaded = () => {
   this.setState({ loading: false })
}

render(){
  const { uploadedLink } = this.state;

  return (
    <img src={uploadedLink} onLoad={this.handleImgLoaded} />
  )
)
0
ответ дан gazdagergo 18 January 2019 в 07:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: