React Native未定义函数

时间:2017-11-23 20:26:48

标签: javascript reactjs react-native ecmascript-6

我试图理解它在React Native中是如何工作的。当我使用this.f()时它抛出并出错,但是当我只使用f()时,它并没有。我不知道为什么。

import React, { Component } from 'react'
import {StyleSheet, Text, View } from 'react-native'

class Home extends Component {
   state = {
       myState: 'a'
   }

   updateState = () => this.setState({ myState: 'The state is updated' })
   render() {
    a = 37;
    function f() {
        return this.a;
    }
    //var f = this.f;
      return (
         <View style = {styles.container}>
            <Text onPress = {this.updateState}>
               {this.state.myState}
            </Text>
               <Text> {this.f()} </Text>
         </View>
      );
   }
}
const styles = StyleSheet.create({
    container: {
        paddingHorizontal: 30,
        paddingVertical: 30,
        alignItems: 'center'
    }
})
export default Home;

1 个答案:

答案 0 :(得分:3)

this函数中的render()关键字是对Home实例的引用。 Home的{​​{1}}没有属性prototype,因此您尝试调用f时会抛出错误。

您声明的函数undefinedf()函数范围内(这绝对是一件坏事,但这是一个不同的主题),render()将被绑定到全局上下文,如果是严格模式,则为未定义。 More here