this.variable не определяется даже после привязки функции? - PullRequest
0 голосов
/ 05 апреля 2019

React Native постоянно говорит, что this.lns не определено, но я попытался связать функцию renderButtons.Я также исследовал несколько раз, и они продолжают говорить, чтобы добавить функции стрелок или связать функцию, которую я, кажется, уже пробовал.Я не уверен, что делаю неправильно.

Я уже пробовал this.renderButtons.bind(this) в нескольких местах, включая конструктор для моего компонента.На данный момент я не уверен, что делать!

Вот ошибка: Необработанное исключение JS: TypeError: TypeError: this.lns не определено

Этокод файла меню - кажется, что функция renderButtons () вызывает проблему.https://pastebin.com/JN7ERCE7 Это код файла урока: https://pastebin.com/wbt0wrbb

Функция renderButtons:

renderButtons(){
    const views = [];

    views.push(
      <Text key="free_label" style={{fontSize: 18}}>Free Fundemental Lessons: </Text>
    );

    for ( var i =0; i<this.lns.free.length; i++){
     views.push(
        <Button
           key={"freeLesson_" + String(i)}
           onPress={() => this.createLessonView.bind(this, () => this.lns.free[i])}
           title={() => this.lns.free[i].title}
           color="#000000"
        />);
        console.log(() => this.lns.free[i].title);
    }

    views.push(
      <Text key={"premiumLabel"} style={{fontSize: 18}}>Premium Lessons: </Text>
    );

    for ( var i =0; i<this.lns.all.length; i++){
      views.push(
         <Button
            key={"premiumLesson_" + String(i)}
            onPress={() => this.createLessonView.bind(this, () => this.lns.all[i])}
            title={() => this.lns.all[i].title}
            color="#841584"
         />);
     }

    return (
      <View style={styles.container}>
        {views}
      </View>
    );
  };

Я ожидаю, что вывод в симуляторе в XCode для моего приложения выведет:Бесплатные фундаментальные уроки: (СПИСОК УРОКОВ КАК КНОПКИ ЗДЕСЬ) Премиальные уроки: (СПИСОК ПРЕМИУМ УРОКОВ ЗДЕСЬ)

Я новичок в StackOverflow и, кстати, React Native.

1 Ответ

1 голос
/ 05 апреля 2019

Измените переменную в for ( var i =0; i<this.lns.all.length; i++){ на let.Это создаст локальную привязку вместо глобальной, которая перезаписывается в цикле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...