我正在使用React Navigation。我将引导您进入记录插入页面之后的对话。重定向时,我提供自动续订。我正在发送参数。但这是行不通的。我不知道我在哪里犯错。
我收到此错误。
未捕获的typeerror。 TypeError:s.handleRefresh不是函数。 (在's.handleRefresh()'中,'s.handleRefresh'未定义
LeadDetail.js页面
static navigationOptions = ({ navigation }) => {
const { params = {} } = navigation.state;
return {
title: 'Müşteri Adayı Detay',
headerRight: (
<TouchableHighlight activeOpacity={0.4} underlayColor='transparent' onPress={() => navigation.navigate('CreateMeeting', { parentId: params.id, parentType: 'Lead' })} style={{marginRight: 12 }}>
<Icon
name="calendar-check-o"
size={25}
color="white"
/>
</TouchableHighlight>
)
};
};
CreateMeeting.js页面
dataSuccess(response) {
this.setState({ buttonLoading: false });
Alert.alert(
'Tebrikler!',
'Meeting başarılı bir şekilde kayıt edildi',
[
{ text: 'Tamam', onPress: () => this.props.navigation.navigate('Meeting', { refreshMeeting: true }) }
]
);
}
Meeting.js页面
static navigationOptions = ({ navigation }) => {
const { params } = navigation.state;
let refresh = navigation.getParam('refreshMeeting', false);
if(refresh) {
params.handleRefresh();
}
return {
title: 'Görüşmeler',
headerRight: (
<View style={{ flexDirection: 'row' }}>
<TouchableHighlight activeOpacity={0.4} underlayColor='transparent' onPress={navigation.getParam('setOverlay')}>
<Icon
name="filter"
size={25}
color="white"
/>
</TouchableHighlight>
<TouchableHighlight activeOpacity={0.4} underlayColor='transparent' onPress={navigation.getParam('setModalVisible')} style={{ marginRight: 12, marginLeft: 20 }}>
<Icon
name="plus"
size={25}
color="white"
/>
</TouchableHighlight>
</View>
)
};
};
答案 0 :(得分:0)
您是否正在设置参数handleRefresh
?应该不是params.handleRefresh();
而不是params.refresh();
吗?
另外,s.handleRefresh
在您的代码中在哪里?我认为有错别字或类似的字词,并且我认为s.handleRefresh
实际上是params.handleRefresh
如果所有问题都不正确,请编辑您的问题。
我不知道您在何处设置参数handleRefresh
,但是如果要进行设置(请检查并在执行该操作的地方添加代码),也许这就是发生这种情况的原因。 / p>
如果您看着docs,他们没有?
React Navigation不保证您的屏幕组件将在标题之前安装。由于递增计数参数是在componentDidMount中设置的,因此我们可能无法在navigationOptions中使用它。这通常不会有问题,因为如果回调为null,则onPress for Button和Touchable组件将不执行任何操作。如果您在此处拥有自己的自定义组件,则应确保其行为符合预期,其新闻处理程序属性为null。
这意味着标头可以在组件调用setParams
之前呈现,并且不会在第一次加载您的params。您需要进行一些检查来避免在标题首次呈现时出现该时间。
// added some checking
if(refresh && params && params.handleRefresh) {
params.handleRefresh();
}