我有问题,这是我的代码:
import React, { Component } from 'react';
import Meteor, {
withTracker,
} from 'react-native-meteor'
import { connect } from 'react-redux';
class CreateCommunityContainer extends React.Component{
static navigationOptions = {
title: 'Community',
headerRight: (
<TouchableOpacity onPress={() => {
this.testFunction(par);
}}>
<View style={{marginRight:5}}>
<Text>NEXT</Text>
</View>
</TouchableOpacity>),
};
testFunction(par){
... some code
}
render(){
...some code
}
}
const CreateCommunityMeteor = withTracker(({userId}) => {
...some code
})(CreateCommunityContainer);
export default connect(mapStateToProps, mapDispatchToProps)(CreateCommunityMeteor);
我的问题是为什么导航选项不被尊重或不应用,我希望导航选项在标题栏中给我标题"社区",但事实并非如此。 但是如果我把它放在导航路由器中,它会像往常一样工作,以及如何让它生效。 顺便说一句,我需要在屏幕类中定义导航选项,而不是在路由器中, 所以我可以从 React 导航的 headerRight 组件调用该类中的函数。
既然你提到没有 withTracker
meteor 函数,你的组件会按预期运行,我相信问题在于withTracker
没有将静态属性带入它创建的新组件中。
您可以尝试改为在CreateCommunityMeteor
组件上设置 navigationOptions
属性:
const CreateCommunityMeteor = ...
CreateCommunityMeteor.navigationOptions = {
...
};
export default connect(...)
我还注意到您在静态函数中调用this
- 这不起作用,因为静态函数无法访问类实例。
同样,我建议的静态函数也无法访问它。
要解决此问题,您可以将navigationOptions
设置为函数:({navigation}) => {...}
并将所需的参数作为参数传递给路由。