Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.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 标题按钮内部的自定义函数_Javascript_Reactjs_React Native - Fatal编程技术网

Javascript 标题按钮内部的自定义函数

Javascript 标题按钮内部的自定义函数,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我正在尝试调用react导航标题中自定义按钮内的自定义函数。我已经研究了几种方法来实现这一点,我发现最好的结果是使函数保持静态,即: export class MyClass extends React.Component{ static navigationOptions = ({navigation}) => ({ headerRight: (<Button title='press me' onPress={()=> MyClass.SomeF

我正在尝试调用react导航标题中自定义按钮内的自定义函数。我已经研究了几种方法来实现这一点,我发现最好的结果是使函数保持静态,即:

export class MyClass extends React.Component{
     static navigationOptions = ({navigation}) => ({
         headerRight: (<Button title='press me' onPress={()=> MyClass.SomeFunction() } ></Button>)
     });
     static SomeFunction(){
        /*Some code here*/
     }
     /*Some extra code here*/
}
导出类MyClass扩展React.Component{
静态导航选项=({navigation})=>({
headerRight:(MyClass.SomeFunction()}>)
});
静态函数(){
/*这里有一些代码*/
}
/*这里有一些额外的代码*/
}
但是,我的问题是,我需要访问
SomeFunction()
中的一些状态属性,并且,正如您所知,您不能在静态函数中访问


是否有任何方法可以访问静态中组件的状态,或者是否有更好的方法在标题中的按钮中实现自定义功能???

作为替代解决方案,您可以将导航器状态设置为设置并获取值

如果使用AppWithNavigation状态父项作为导航结构的根,则应将
导航
道具传递给子元素,如下所示:

render() {
    const { dispatch, nav, } = this.props
    return (
        <AppNavigator
            navigation={addNavigationHelpers({
                dispatch: dispatch,
                state: nav,
            })}
        />
    )
}
然后,根据需要随时获取设置值,如下所示:

this.props.navigation.state.someValue

const { someValue } = this.props.navigation.state
但请记住,在首次呈现组件时,组件状态可能为null或未定义。因此,在尝试获取以下信息之前,您需要检查其是否存在:

if (!this.props.navigation.state) {
    return null
}

const someValue = this.navigation.state.someValue

if (someValue) {
    /* you can use your someValue here! */
}

注意每个路由都有自己的状态对象。更改屏幕时,
this.props.navigation.state
对象的状态将更改。如果您需要一个全局解决方案,我想,您可以使用Redux。

在花了一段时间处理代码之后,我找到了一个更适合我需要的解决方案。我把它贴在下面,以防对任何人都有帮助。感谢大家的贡献:D

export class MyClass extends React.Component{
   static navigationOption = ({navigation}) => ({
       headerRight: (<Button title='Press Me!' onPress={() => MyClass.SomeFunc() })
   })

   //The function 
   static SomeFun(){
       alert(MyClass.SomeState.abc)
   }

   //Static functioning as state
   static SomeState = {
       abc: 'def'
   }
}
导出类MyClass扩展React.Component{
静态导航选项=({navigation})=>({
headerRight:(MyClass.SomeFunc()})
})
//功能
静态SomeFun(){
警报(MyClass.SomeState.abc)
}
//作为状态的静态功能
静态状态={
abc:‘def’
}
}

以下是直接从他们的文档中获得的方法

还有一个npm模块使这变得更容易

类主屏幕扩展React.Component{
静态导航选项=({navigation})=>{
const params=navigation.state.params | |{};
返回{
标题:,
头灯:(
),
};
};
组件willmount(){
this.props.navigation.setParams({increaseCount:this.\u increaseCount});
}
状态={
计数:0,
};
_递增计数=()=>{
this.setState({count:this.state.count+1});
};
/*稍后在渲染函数中,我们将显示计数*/

}
无需将函数设置为静态。如果可以,请帮助我解决此问题?谢谢,我正在尝试同样的自定义按钮,但无法调用函数
export class MyClass extends React.Component{
   static navigationOption = ({navigation}) => ({
       headerRight: (<Button title='Press Me!' onPress={() => MyClass.SomeFunc() })
   })

   //The function 
   static SomeFun(){
       alert(MyClass.SomeState.abc)
   }

   //Static functioning as state
   static SomeState = {
       abc: 'def'
   }
}