Оповещение Sweet не показывает динамическое значение, что я сделал не так?

#javascript #node.js #reactjs

#javascript #node.js #reactjs

Вопрос:

Я установил конструктор следующим образом:

 ...
constructor(props) 
        {
            super(props);
            this.state = 
            {          
                 progressBarValue: 0
            }

        }
...
  

Функция обратного вызова из NodeJS в ReactJS выглядит следующим образом :

 ...
setTimeout(() => axios.post(BASE_URL   '/timer04')
   .then(res =>
      {  timerGrab = res.data;                                                            
         console.log(`Timer Value 04 :`  timerGrab );                                                            
         var timerLocal = parseInt(timerGrab );                                                            
         this.setState({
              progressBarValue: timerLocal 
             })                                            
         console.log(`Data 04 NEW: `  this.state.progressBarValue);
       })                    
   .catch(err =>                                               
      {                                                            
        console.error('ERROR:', err);
      }),10000)
...
  

В Sweet Alert 2 я вызвал данные, которые передаются из NodeJS в ReactJS.

 ...

let timerInterval
    MySwal.fire(
    {         
        title: 'Processing...',
        html: this.state.progressBarValue  `of 5 <br> <Progress animated value=${this.state.progressBarValue} max={5}/>`,
        timer: 62000,
...
  

Вывод в пользовательском интерфейсе, индикатор выполнения не работает и выглядит так :

введите описание изображения здесь

Также выходные данные в консоли выглядят следующим образом :

введите описание изображения здесь

Какие-нибудь решения, ребята?

Ответ №1:

Как вы могли заметить, поработав с некоторыми реакциями, setState является асинхронным, и поэтому вам будет лучше использовать обратный вызов setState (подробнее об этом вы можете прочитать здесь:https://reactjs.org/docs/react-component.html#setstate). Итак, вместо этого:

 this.setState({
  progressBarValue: timerLocal 
})                                            
console.log(`Data 04 NEW: `  this.state.progressBarValue);
  

Вы должны попробовать это:

 this.setState({
  progressBarValue: timerLocal
}, () => console.log(`Data 04 NEW: ${this.state.progressBarValue}`));
  

Затем он сообщит о точном значении this.state.progressBarValue

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

1. Оно не обновляет значение в предупреждении sweet, хотя