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中侦听更改。这将是一种更合适的方式:)