【发布时间】:2020-03-24 14:20:07
【问题描述】:
我是 React Native 的新手,我想问一下如何使用 navigationOptions 将功能组件中的钩子状态传递到另一个屏幕
代码如下:
const Screen = props => {
const [eventName, setEventName] = useState('');
React.useLayoutEffect(() => {
props.navigation.setOptions({
headerRight: () => (
<HeaderButtons HeaderButtonComponent={HeaderButton}>
<Item
title="Finish"
iconName={Platform.OS === 'adroid' ? 'done-all' : 'done-all'}
onPress={() => {
props.navigation.navigate('TripsListDetailScreen', {
final_eventName: eventName,
})
}}
/>
</HeaderButtons>
)
});
}, [props.navigation]);
return(...);
}
我正在尝试将eventName 传递到另一个屏幕。由于我们必须在组件外部使用navigationOptions 来设置headerRight 的样式,例如:
Screen.navigationOptions = data => {
return(
headerTitle:...,
headerRight: ....
)
}
我们不能在那里传递参数。所以我尝试了React.useLayoutEffect() 中描述的docs
但是屏幕抛出错误:
请帮忙
【问题讨论】:
-
props.navigation.setOptions很可能是undefined。你能检查一下它为console.log(props.navigation)记录了什么吗? -
它像往常一样记录:| {“actions”:{“dismiss”:[函数关闭],“goBack”:[函数 goBack],“navigate”:[函数导航],“pop”:[函数 pop],“popToTop”:[函数 popToTop] , "push": .....对不起,字数有限,我不能给你更多:(
-
顺便说一句,我使用的是 v.4。 docs v4 没有讨论如何使用功能组件来做到这一点。所以我使用 v5 指南
-
哦它没有
setOptions功能。是这个问题吗? -
是的,因为您正试图将其作为
props.navigation.setOptions({ })之类的函数调用。对于setOptions的undefined值,这是不可能的。
标签: javascript reactjs react-native react-navigation