绑定该函数后,是否仍未定义this.variable?

时间:2019-04-05 18:05:33

标签: javascript node.js react-native react-native-ios

React Native一直说this.lns未定义,但是我尝试绑定函数renderButtons。我也进行了多次研究,他们一直在说要添加箭头功能或绑定功能,而我似乎已经尝试过了。我不确定自己在做什么错。

我已经在多个地方尝试过this.renderButtons.bind(this),包括组件的构造函数。此时,我不确定该怎么办!

这是错误: 未处理的JS异常:TypeError:TypeError:this.lns未定义

这是菜单文件代码-renderButtons()函数似乎引起了问题。 https://pastebin.com/JN7ERCE7 这是Lessons文件代码: 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 个答案:

答案 0 :(得分:1)

for ( var i =0; i<this.lns.all.length; i++){中的var更改为let。 这将创建局部绑定而不是全局绑定,而在循环中该全局绑定将被覆盖。