reactjs - 未定义不是对象 this.props.navigation - 反应原生
问题描述
我有这个问题,不知道它是否与导航器选项或渲染视图有关,有人可以看看我的代码并提供一些见解。
APPNavigator.js
export default createSwitchNavigator({
Main: MainTabNavigator,
Custom: CustomNavigator,
},{
initialRouteName: 'Main'
}
);
CustomNavigator.js
const BrowserStack = createStackNavigator({ Select: Search, Browser: Browser });
export default createStackNavigator({
BrowserStack
},{
headerMode: 'none',
navigationOptions: {
headerVisible: false,
}
}
);
MainTabNavigator.js
const DashStack = createStackNavigator({
Home: Dashboard,
});
const SearchStack = createStackNavigator({
Select: Search,
});
const FavoritesStack = createStackNavigator({
Auth: Favorites,
});
export default createBottomTabNavigator({
DashStack,
SearchStack,
FavoritesStack,
});
我在搜索屏幕上运行 API 调用并在 flatList 上呈现项目,如下所示:
<FlatList
data={this.props.results}
renderItem={({ item, index }) => (
<RkCard rkType='story'>
<RkButton rkType='small outline' onPress={this.test}>View</RkButton>
</RkCard>
)}/>
我的代码在这个函数中中断test
,我不知道为什么我不能导航到那个屏幕。我还需要item.href
稍后发送以访问它。
test() {
this.props.navigation.navigate('Browser',{ source: item.href })
}
任何形式的帮助表示赞赏。谢谢
解决方案
为了访问类道具,您需要将函数绑定到它。
最简单的方法是使用箭头函数作为
test = () => {
this.props.navigation.navigate('Browser',{ source: item.href })
}
如果屏幕没有在导航堆栈中注册,那么您需要添加一个HOC withNavigator,它可以访问导航道具。
推荐阅读
- asp.net-mvc-4 - 如何将 MVC 应用程序从一台服务器移动到另一台服务器?
- c# - InvalidOperationException:连接未关闭。连接的当前状态是正在连接
- css - 如何在两个 div 都有 html 表的情况下水平排列两个 div?
- angular - 尝试从商店填充 ng-select 组件和 @ngrx/store 但给出未定义的响应
- java - 爪哇 | 如何从字符串中删除常用词,然后连接不常用词?
- string - 如何检查字符串是否包含 Kotlin 中的子字符串?
- asp.net-mvc - 如何从 MVC 应用程序触发带有 pdf 附件的自动电子邮件,其内容是动态网页?
- excel-formula - 如果时间单元格上的公式不起作用
- python - Django REST FRAMEWORK中的外键关系
- python - Microsoft Graph API:我卡在授权工作流中