我在反应导航中遇到问题,错误消息“未定义不是对象(正在评估'navigation.navigate')”。 尝试通过其他路线的按钮调用屏幕时发生错误
组件代码:
export default function Estruturas({ title, display, navigation }) {
const [estruturas, setEstruturas] = useState([]);
useEffect(() => {
async function loadEstruturas() {
const response = await api.get('/produto/api/estrutura');
setEstruturas(response.data);
}
loadEstruturas();
}, []);
return (
...
<ProductList>
{estruturas.map(estrutura => (
<Item key={estrutura.id} onPress={()=> navigation.navigate('Pedidos')}>
...
路线代码:
const Tab = createMaterialBottomTabNavigator();
function MyTabs(){
return(
<Tab.Navigator
barStyle={{ backgroundColor: '#694fad' }}
initialRouteName='Feed'
activeColor='black'
>
<Tab.Screen
name="Início"
component={Dashboard}
options={{
tabBarLabel: 'Início',
tabBarIcon: ({ color }) => (
<MaterialCommunityIcons name="home" size={26} />
),
}}
/>
<Tab.Screen
name="Pedidos"
component={Requests}
options={{
tabBarLabel: 'Pedidos',
tabBarIcon: ({ color }) => (
<MaterialCommunityIcons name="assignment" size={26} />
),
}}
/>
</Tab.Navigator>)}
export default function Routes() {
return (
<NavigationContainer>
<MyTabs />
</NavigationContainer>
);
}
我尝试过Stack,但它给出了相同的错误
答案 0 :(得分:0)
只有导航器堆栈的直接子代可以访问导航道具。我可以看到您的组件 Estruturas 不是直接路线,因此它不会直接在功能props内部获得导航prop。有两种方法可以完成并修复此问题。
export default function Dashboard(props) {
return (
<View>
<Estruturas navigation={props.navigation} />
</View>
);
}