React Native导航栏系列(三)页面跳转传参

接着前两篇文章,我们继续往下学习。页面之间传递参数无论是在App中还是网站、小程序中都是非常重要的。

然而各种技术的传参方式也稍有不同。那么RN中的页面传参都有哪几种方式呢?

一、是在App.js中,将页面写入页面栈时传的初始参数。

  <Stack.Screen name="首页" component={
    
    HomeScreen} initialParams={
    
    {
    
    cscs:'123'}} />

initialParams={ {cscs:‘123’}}就是首页页面初始化时的参数。你可以在HomeScreen页面打印this.props进行查看参数。
在这里插入图片描述
二、页面跳转进行传参。

this.props.navigation.navigate('用户列表',{
    
    
            cs1:'cs1',
            cs2:'cs2'
        })

这是从HomeScreen页面跳转到UserList页面时,进行传的参数 cs1,cs2 。
参数就写在栈名后面。

接着在UseList页面打印一下this.props 就可以获得参数。
在这里插入图片描述
三、页面参数更新setParams。
setParams() 方法可以更新 route.params 当前屏幕的参数。setParams就像setState() 一样 。将提供的params对象与当前params合并。
基本用法:

function ProfileScreen({
    
     navigation: {
    
     setParams } }) {
    
    
  render() {
    
    
    return (
      <Button
        onPress={
    
    () =>
          setParams({
    
    
            friends:
              route.params.friends[0] === 'Brent'
                ? ['Wojciech', 'Szymon', 'Jakub']
                : ['Brent', 'Satya', 'Michaś'],
            title:
              route.params.title === "Brent's Profile"
                ? "Lucy's Profile"
                : "Brent's Profile",
          })
        }
        title="Swap title and friends"
      />
    );
  }
}

四、将参数传递给嵌套导航器中的屏幕。

navigation.navigate('Root', {
    
    
  screen: 'Settings',
  params: {
    
     user: 'jane' },
});

如果导航器已经渲染,则在使用堆栈导航器的情况下导航到另一个屏幕将推送一个新屏幕。

对于深层嵌套的屏幕,你可以遵循类似的方法。请注意,navigate这里的第二个参数是params,因此你可以执行以下操作:

navigation.navigate('Root', {
    
    
  screen: 'Settings',
  params: {
    
    
    screen: 'Sound',
    params: {
    
    
      screen: 'Media',
    },
  },
});

最后一种参数传递暂时没有示例用到,如有用到,后续补充。

有问题可以留言,一起讨论解决~

猜你喜欢

转载自blog.csdn.net/weixin_43729943/article/details/108352422