javascript - 如何修复“未定义不是对象(评估'this.props.navigation')”
问题描述
我无法理解反应导航。我用它定义了 stackNavigator 和 createAppContainer。我有两个组件注册为路由(MainPage,PasswordItemDetail)。MainPage 指向 PasswordItemDetail 但它们之间还存在两个组件。我一一发送导航但仍然出错。你能告诉我导航的逻辑吗?
提前致谢。
应用程序.js
import AppNavigator from './components/AppNavigator';
export default AppNavigator;
应用导航器
import { createAppContainer } from "react-navigation";
import { createStackNavigator } from "react-navigation-stack";
import MainPage from "./MainPage";
import PasswordItemDetail from "./PasswordItemDetail";
const AppNavigator = createStackNavigator(
{
MainPage: {
screen: MainPage
},
PasswordItemDetail: {
screen: PasswordItemDetail
}
},
{
headerMode: "none",
navigationOptions: {
headerVisible: false
}
}
);
export default createAppContainer(AppNavigator);
主页
import React from "react";
import { Container, Content } from "native-base";
import PasswordHeader from './PasswordHeader';
import PasswordItemList from './PasswordItemList';
import PasswordFooter from './PasswordFooter';
export default function MainPage() {
const { navigation } = this.props;
return (
<Container>
<PasswordHeader />
<Content>
<PasswordItemList navigation={navigation} />
</Content>
<PasswordFooter />
</Container>
);
}
密码项列表
import React, { Component } from 'react';
import { List } from 'native-base';
import PasswordItem from './PasswordItem';
export default class PasswordItemList extends Component {
render() {
const { navigation } = this.props.navigation;
return (
<List>
<PasswordItem navigation={navigation}/>
<PasswordItem navigation={navigation}/>
<PasswordItem navigation={navigation}/>
<PasswordItem navigation={navigation}/>
</List>
);
}
}
密码项
import React, { Component } from 'react';
import { ListItem, Text } from 'native-base';
export default class PasswordItem extends Component {
render() {
return (
<ListItem onPress={() => this.props.navigation.navigate('PasswordItemDetail')}>
<Text>Password Item</Text>
</ListItem>
);
}
}
密码项目详细信息
import React, { Component } from 'react';
import { Form, Item, Label, Input } from 'native-base';
export default class PasswordItemDetail extends Component {
render() {
return (
<Form>
<Item floatingLabel>
<Label>Name</Label>
<Input />
</Item>
<Item floatingLabel>
<Label>Username</Label>
<Input />
</Item>
<Item floatingLabel>
<Label>Password</Label>
<Input />
</Item>
</Form>
);
}
}
解决方案
改变
const { navigation } = this.props.navigation;
至
const { navigation } = this.props;
第一行相当于const navigation = this.props.navigation.navigation;
,并且您没有传入navigation
道具,因此它试图查找.navigation
,undefined
并出错。
为什么navigation
是空的是一个单独的问题。
推荐阅读
- javascript - 在 Stack Navigator 中使用 navigation.openDrawer
- java - 如何杀死有关时间的条件边界突变
- javascript - 无效的钩子语句,转换为使用类
- python - 将一列中的空格分隔字符串拆分为两列(int)-pandas python
- api - 如何将气候 API 转换为 WMS / WFS 层以进行高级分析
- flutter - Flutter:应用未打开时如何在应用外显示 FCM 推送通知
- qt - 调用 'pkg-config --libs-only-l Qt5Core Qt5Network Qt5Widgets 返回退出状态 1
- python - 使用 BeautifulSoup 解析公司列表的问题
- session - ColdFusion 2018 标准 2 节点集群,带有用于故障转移的 J2EE 共享会话
- time - 雪花不确定查询时间比较