React Native Navigation 组件到底怎么使用this.props.navigation.navigate

今天就路由导航的问题来说下我的理解。

首先要提醒一下想入门的朋友一定要看API 多看,不懂英文的可以中英文对照。

https://reactnavigation.org/docs/zh-Hans/getting-started.html react-navigation官方网站
 

import React from 'react';

import { createStackNavigator, createAppContainer } from 'react-navigation';

// 1 导入组件

import TabScreen from './views/TabBar'

import DetailsScreen from './views/Details';


// 2 首先你要定义的跳转createStackNavigator

const RootStack = createStackNavigator({

Tab : {

screen : TabScreen,

navigationOptions : {

header : null

}

},

Details : {

screen : DetailsScreen,

}

}

/**

*

* this.props.navigation:navigation prop 传递给每个在 stack navigator 中定义的( **屏幕组件</ strong>)

* navigate('Details'):我们使用用户将要跳转的路由的名称来调用navigate方法。

*

*/

);

// 3 App 容器负责管理应用的 state

const AppContainer = createAppContainer(RootStack);


// 4 并将顶层的 navigator 链接到整个应用环境

export default class App extends React.Component {

render() {

return <AppContainer />;

}

}

现在才明白,整了一周导航器了!

在TabScreen 和 DetailsScreen 中才能访问 this.props.navigation.navigate('Details'),也就是说没有在这个stack中注册的组件都不能直接访问,所以组件里面嵌套的组件都要将本组件的props的navigation对象传递过去,不然会报错 :React Navigation - cannot read property 'navigate' of undefined

这是我在TabScreen 组件中Car 是我自己定义的组件,我是这样子传值的

<Car navigation = {this.props.navigation}></Car>

在car组件中使用FlatViews的传值:

<FlatViews navigation = {this.props}/>

FlatViews 中接收值:

this.props.navigation.navigation.navigate('Details');

注意:这里之所以多了一个navigation 是因为我组装的传值多了一层,要根据自己的数据结构来

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值