React Native:在静态函数内访问组件状态

时间:2017-02-21 17:03:13

标签: javascript reactjs react-native ecmascript-6

我有一个像这样定义的组件

export class A extends Component{
   constructor(props){
     this.state = {
        scene:0
     }
   }
  static changeScene(scene){
     this.setState({scene:scene})
  }
}

我想使用A.changeScene(sceneVal)从任何地方调用更改场景   改变A中的场景。问题是我无法访问this.setState我收到此错误Unhandled JS Exception: this.setState is not a function.

我确信A组件已经安装。我可以通过在构造函数中的构造函数var self = null;中定义全局变量self = this来绕过此错误,但我希望有更好的方法来解决此问题

1 个答案:

答案 0 :(得分:1)

原因是,如果您使用static function,则static方法无法访问该功能内的this。您应该避免使用static功能。 Static方法无法使用class访问this实例上定义的值,属性和方法。

查看此文章:http://odetocode.com/blogs/scott/archive/2015/02/02/static-members-in-es6.aspx