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