Реагировать — `Ошибка типа: var не определен», даже если var определен

#javascript #reactjs

Вопрос:

У меня есть класс компонентов React. Два из них-это методы:

 getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min   1)   min);
  };

changeQuote() {
    var randQuoteObj = this.quotes[this.getRandomInt(0, this.quotesNum)];
    this.setState((state) => {
      return {
        randAuthor: randQuoteObj["author"],
        randQuote: randQuoteObj["quote"],
        randColor: this.colors[this.getRandomInt(0, this.colorsNum)]
      };
    });
  };
 

Кнопка имеет changeQuote() свой onClick атрибут.

Проблема в том, что иногда (НЕ всегда, случайным образом) Я получаю следующую ошибку: TypeError: randQuoteObj is undefined . Если я обновлю страницу, страница загрузится правильно. Цикл продолжается.

Я пытался сделать randQuoteObj члена класса state свойством реакции, но ничего не помогло. Что я делаю не так? Я нахожусь на Fedora и запускаю приложение React с помощью npm start .

Решенный. Пожалуйста, смотрите комментарии.

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

1. Можете ли вы показать нам весь компонент целиком?

2. getRandomInt включено ( max можно нажать). Вы не показываете, что this.quotesNum есть, но я предполагаю, что это длина массива, и this.quotes[this.quotes.length] так было бы undefined .

3. Причина, по которой у вас такое поведение, заключается в том, что this.quotes[this.getRandomInt(0, this.quotesNum)]; оно зависит от случайного, поэтому время от времени оно отличается. Похоже this.quotes , что он не содержит правильного значения для некоторых this.getRandomInt(0, this.quotesNum) возвращаемых значений. Пожалуйста, убедитесь, что у вас есть все ценности внутри this.quotes . В случае, если у вас есть дополнительные вопросы, пожалуйста, обновите свой вопрос, чтобы показать this.quotesNum и this.quotes оценить.

4. @ASDFGerte, Это решило проблему. Спасибо.