• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

标题按钮内部自定义函数反应原生

JavaScript 来源:edvilme 23次浏览

我想在我的反应导航标题中调用自定义按钮内的自定义函数。我看着周围的几个方法可以做到这一点,我已经找到了最好的结果是使功能静态的,那就是:但是标题按钮内部自定义函数反应原生

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*/ 
} 

我的问题是,我需要内部访问一些国家性质SomeFunction(),如您所知,您无法在静态函数中访问this

有没有什么办法可以访问一个静态内的组件的状态,还是有一个更好的方法来实现一个自定义函数在一个按钮中的头?


===========解决方案如下:

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

如果使用AppWithNavigation状态父为您的导航结构的根,你应该是一个navigation道具传递给子元素象下面这样:

render() { 
    const { dispatch, nav, } = this.props 
    return (
     <AppNavigator 
      navigation={addNavigationHelpers({ 
       dispatch: dispatch, 
       state: nav, 
      })} 
     /> 
    ) 
} 

如果是这样,只需使用下面的行设置你的价值观:

this.props.navigation.state.someValue 

this.props.navigation.setParams({someValue: 'Value'}) 

每当你想要像下面然后让你的设定值

或者

const { someValue } = this.props.navigation.state 

但请记住,当第一次呈现组件的状态可以为空或未定义。所以,你需要检查其现有之前尝试获得:

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。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)