Я пытаюсь визуализировать счетчик после события onClick, поэтому значок загрузки будет отображаться, пока работает другая функция (в данном случае моя функция glitcher ()).Моя функция рендеринга ниже.OnClick вызывает обработчик, который устанавливает последовательность состояний, также показанную ниже.
Прямо сейчас onClick вызывает handleGlitch, и состояние glitchLoading правильно установлено в значение true (проверено с помощью вызова console.log в условном выражении), но спиннер не рендерится.
обработчик onClick handleGlitch ():
handleGlitch() {
this.setState({ glitchLoading: true }, () => {
this.glitcher()
});
}
Функция визуализации:
render() {
let previewImage = null;
let loader = null;
if (this.state.originalFiles.length !== 0) {
previewImage = <img className="folder-icon" src={placeholder} alt="" />;
}
if(this.state.glitchLoading) {
console.log("loading");
loader = <Spinner color="primary" />;
}
return (
<Container className="previewComponent">
<Row>
<Col>
<legend>
<b>Upload Images:</b>
</legend>
<input
className="fileInput"
id="myfileinput"
type="file"
onChange={this.handleShow}
multiple
/>
</Col>
</Row>
<Row>
<Col className="uploadField">
<Container className="imgPreview">{previewImage}</Container>
</Col>
<Col className="optionField">
<OptionsForm
value={this.state.distortion}
valueChange={value => {
this.setState({ distortion: value });
}}
/>
<Button
color="danger"
onClick={this.handleGlitch}
className="glitch-button"
>
Glitch Images
</Button>
{loader}
</Col>
</Row>
</Container>
);
}