异常:未定义不是一个对象(评估“navigation.navigate”)
我在
Books.js
中的 Stack 导航器中有四个屏幕:
function Books(props) {
return (
<Stack.Navigator>
<Stack.Screen name="Home" component={BooksMenu} />
<Stack.Screen name="Order Book" component={BookOrder} />
<Stack.Screen name="My Books" component={MyBooks} />
<Stack.Screen name="Details" component={MyBooksDetails} />
</Stack.Navigator>
);
}
从
BooksMenu
屏幕,用户导航到
MyBooks
屏幕,并且从
MyBooks
有一个按钮可将用户导航到
MyBooksDetails
屏幕。
当我单击应该将用户从
MyBooks
屏幕导航到
MyBooksDetails
的按钮时,会弹出此错误。按钮操作的处理方式如下:
<TouchableWithoutFeedback style={styles.detailsBtn}
onPress={() => navigation.navigate('Details')} >
<Text style={styles.detailsBtnText}>See Details</Text>
</TouchableWithoutFeedback>
我已经在
BookCell
上用这个重构了默认的
props
,它只是
MyBooks
屏幕中的自定义组件。
function BooksCell({ navigation }) {...
包含
BookCell
组件的屏幕仍然具有默认的
props
。
function MyBooks(props) {...
因此,子屏幕(即组件
BooksCell
)具有
navigation
作为重构的 prop,其父屏幕
MyBooks
作为默认的
props
,并且
MyBooks
的父屏幕即
BooksMenu
也具有
navigation
作为重构的prop。
function BooksMenu({ navigation }) {...
希望这有意义。我是 React Native 的新手,所以我的想法可能是错误的,但不确定如何修复它。
破坏
({navigation})
vs.
(props)
没有区别。 重要的是在调用组件时提供的道具。代码>道具。 它没有提供Prop。
mybooks
和
booksmenu
将使用props
navigation
/code>和
路由
由导航器渲染时。
bookscell
不是屏幕,因此React Navigation不会提供任何道具。
如果您想使用prop
navigation
in
bookscell中的prop
然后您必须提供它。 您可以将其从具有Prop的父母传递给。 >通过
usenavigation()
hook
>导航
通过使用当前导航器的上下文。
591478673