为什么我不能使用“this”在类组件中使用mystyle?

时间:2017-08-13 03:01:29

标签: react-native ecmascript-6

我有以下代码:

import React, { Component } from 'react';
import { Text, view } from 'react-native';

class LoginForm extends Component {


  render() {
      return(
        <Text style={ styles.errorMessageStyle }>
          {this.props.auth.error}
        </Text>   
      );
  }
}

const styles = {
  errorMessageStyle: {
    fondSize: 20,
    alignSelf: 'center'
  }
};

为什么当我在this使用style={ this.styles.errorMessageStyle }时,它会显示错误Cannot read property 'errorMessageStyle' of undefind。 但当我删除它有效吗?

4 个答案:

答案 0 :(得分:2)

this引用当前对象,显式为LoginForm。您的styles变量不属于LoginForm,因此无法使用this

进行调用
class SomeObject extends Component {
  constructor(props){
    super(props)
    someVariable = "Hello, World"
  }

  someOtherMethod() {
    //...
  }


  render() {
     //...
  }
}

const someStyles = {

};

从上面的示例中,您不能使用this来调用someStyles,但对于someVariable,它在当前对象的范围内,因此可以使用this,同样的对象中的someOtherMethod方法

答案 1 :(得分:1)

因为您的样式对象不在您的班级中,并且使用this您可以访问您的班级成员。 如果要这样做,您应该在类中定义样式对象。

答案 2 :(得分:0)

因为style引用了当前对象。您的const styles = { 声明应来自:

this.styles = {

this

最后一个必须在你的班级内。

现在,您可以在style内使用employee_ids

答案 3 :(得分:0)

stylesconstant。和points到当前实例。

如果stylesclass返回样式对象的方法,那么您可以使用this.styles(),但在您的情况下,您将其定义为constant。< / p>

希望这有帮助。