Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React Native:访问静态函数中的组件状态_Javascript_Reactjs_React Native_Ecmascript 6 - Fatal编程技术网

Javascript React Native:访问静态函数中的组件状态

Javascript React Native:访问静态函数中的组件状态,javascript,reactjs,react-native,ecmascript-6,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。我遇到了

我有一个这样定义的组件

export class A extends Component{
   constructor(props){
     this.state = {
        scene:0
     }
   }
  static changeScene(scene){
     this.setState({scene:scene})
  }
}
我想使用
A.changeScene(sceneVal)
要更改A中的场景,问题是我无法访问this.setState。我遇到了此错误
未处理的JS异常:this.setState不是函数。


我确信A组件已经安装。我可以通过定义一个全局变量
var self=null绕过这个错误和构造函数内部
self=this
在构造函数中,但我想要一个更好的方法来解决这个问题

原因是,如果使用
静态函数
,那么
静态
方法将无法访问该函数内部的
this
。应避免使用
静态
功能<代码>静态
方法无法访问使用
实例上定义的值、属性和方法


检查这篇文章:

您能确定组件
a
只有一个实例吗?如果是,那么将该分配给静态变量似乎是合理的。如果没有,那么您需要重新思考这个问题。我不确定静态函数是否需要
bind
来保持上下文。您可以给它一个trystatic函数将永远无法访问
您的非静态函数可以访问。考虑非静态方法,因为每个实例都有它,考虑静态方法,因为类有它。是的,我确信它将是一个实例。我尝试绑定静态函数,但现在它给我一个错误定义一个全局变量self=这是一个坏主意比?它将不超过一个实例。谢谢:)您可以使用全局变量,但我认为最好使用诸如redux/flux之类的架构,这样您就可以轻松地完成此类任务。让我们假设您想在A中更改某个组件,将该值传递到存储,并在A中侦听更改。这将是一种更合适的方式:)