navigation怎么传参以及怎么接收
来看看我们的HomeScreen.js页⾯,当我们点击卡⽚的时候,我们想要把card的参数传到ctionScreen中,于是:
<TouchableOpacity
key={index}
onPress={()=>{
绝地突围this.props.navigation.push('Section',{ction:card})
}}
>
<Card
image={card.image}
title={card.title}
caption={card.caption}
subtitle={card.subtitle}
种菜的步骤
丑时五行属什么logo={card.logo}
人面虫/>
</TouchableOpacity>
1. 应⽤中的每个页⾯组件都会⾃动提供 this.props.navigation
this.props.navigation可以获取的⼀些⽅法:
navigate - 转到另⼀个页⾯, 计算出需要执⾏的操作 (常⽤)
goBack - 关闭活动屏幕并在堆栈中向后移动 (常⽤)
addListener - 订阅导航⽣命周期的更新
isFocud - 函数返回 true 如果屏幕焦点和 fal 否则。
state - 当前状态/路由 (常⽤)
tParams - 对路由的参数进⾏更改 (常⽤)
getParam - 获取具有回退的特定参数 (常⽤)
dispatch - 向路由发送 action (常⽤)
dangerouslyGetParent - 返回⽗级 navigator 的函数
this.props.navigation并不是在所有页⾯(组件)中都可以使⽤,⽽是必须在StackNavigator、DrawerNavigator中声明的screen组件,才可以使⽤this.props.navigation。
2. 如果是StackNavigator,除了以上⽅法,this.props.navigation还提供如下的⼀些⽅法:
push - 推⼀个新的路由到堆栈 (常⽤)
三国演义全文pop - 返回堆栈中的上⼀个页⾯ (常⽤)
popToTop - 跳转到堆栈中最顶层的页⾯ (常⽤)
replace - ⽤新路由替换当前路由
ret- 操作会擦除整个导航状态,并将其替换为多个操作的结果。 (常⽤)
身份证号提取年龄公式
dismiss - 关闭当前堆栈
3. 如果是DrawerNavigator,除了以上⽅法,this.props.navigation还提供如下的⼀些⽅法:
openDrawer - 打开
cloDrawer - 关闭
toggleDrawer - 切换,如果是打开则关闭,反之亦然
this.props.navigation.push('Section',{ction:card})
功能:导航到某个路由 (即跳转页⾯)
使⽤:this.props.navigation.push(routeName, params, action)
参数:
routeName(必需)表⽰需要导航到的⽬标路由(即跳转的⽬标页⾯),是在StackNavigator 中声明的screen页⾯的名称
params(可选)表⽰跳转携带的参数,可以使⽤⼤括号携带多个,形式是key-value形式,在⽬标页⾯使⽤海尔公司简介
this.props.navigation.或者this.Param('xxx')来获取使⽤
action(可选)不常⽤,此处不做解释
Push - 在堆栈顶部添加⼀条路由,并导航⾄该路由. 与navigate的区别在于,如果有已经加载的页⾯,navigate⽅法将跳转到已经加载的页⾯,⽽不会重新创建⼀个新的页⾯。 push 总是会创建⼀个新的页⾯,所以⼀个页⾯可以被多次创建。
所以我们可以将参数封装成⼀个对象,然后将这个对象作为navigation.push()⽅法的第⼆个参数,从⽽实现跳转的时候传递参数过去,接着在ctionScreen.js页⾯中使⽤getParams('xxx')⽅法读取传递过来的参数。什么是波轮洗衣机
const {navigation} = this.props;
const ction = Param('ction');