React Native-将道具从一个屏幕传递到另一个屏幕(使用标签导航器进行导航)

杰瑞德

我需要将数据从主屏幕传递到第二屏幕。如果我单击主屏幕上的一个按钮导航到SecondScreen,有大量的示例,但是如果我使用v2底部标签导航器,找不到任何显示如何传递到SecondScreen的示例。从HomeScreen到SecondScreen。我已经尝试了screenprops和其他几种方法,并花了大约8个小时试图弄清它,但无法使其正常工作。任何想法如何做到这一点?请,任何提示将是惊人的。这是我的代码:

MainTabNavigator.js:

 const config = Platform.select({
  web: { headerMode: 'screen' },
  default: {},
});


const HomeStack = createStackNavigator(
  {
    Home: HomeScreen,

  },
  config

);

HomeStack.navigationOptions = {
  tabBarLabel: 'Home',
  tabBarIcon: ({ focused }) => (
    <MaterialIcons name="home" size={32}  />
  ),
};

HomeStack.path = '';


const SecondStack= createStackNavigator(
  {
    Second: SecondScreen,
  },
  config
);    

SecondStack.navigationOptions = {
  tabBarLabel: 'Second screen stuff',

  tabBarIcon: ({ focused }) => (
    <MaterialIcons name="SecondScreenIcon" size={32}  />
  ),
};

SecondStack.path = '';


const tabNavigator = createBottomTabNavigator({
  HomeStack,
  SecondScreen
});

tabNavigator.path = '';

export default tabNavigator;

HomeScreen.js:

  class HomeScreen extends Component {

  constructor(props){
    super(props);  
  }

 componentDidMount(){

   this.setState({DataFromHomeScreen: 'my data that Im trying to send to SecondScreen'})

  }

//....

SecondScreen.js:

class SecondScreen extends Component {

      constructor(props){
        super(props);  
      }


   render()
   return(     

         <View>{this.props.DataFromHomeScreen}</View>

    )


    //....

****请在下面找到我尝试过的东西:****

HomeScreen.js:执行此操作时,它首先会收到它,然后传递null

render(){

return(
<View>
 //all of my home screen jsx
<SecondScreen screenProps={{DataFromHomeScreen : 'data im trying to pass'}}/>
</View>
)
}

MaintTabNavigator.js:执行此操作时,它首先会收到它,然后传递null

HomeStack.navigationOptions = {
  tabBarLabel: 'Home',
  tabBarIcon: ({ focused }) => (
    <MaterialIcons name="home" size={32}  />
  ),
};

<HomeStack screenProps={{DataFromHomeScreen:'data im trying to pass'}}/>


HomeStack.path = '';

我也尝试过其他5种方法,但我现在甚至都不记得了。我不想在第二个屏幕中再次调用我的数据库来获取用户信息。我认识的人都不知道会做出反应还是做出反应。https://reactnavigation.org/docs/en/stack-navigator.html上的React Native文档充其量是最少的,仅显示以下内容:

const SomeStack = createStackNavigator({
  // config
});

<SomeStack
  screenProps={/* this prop will get passed to the screen components as this.props.screenProps */}
/>

即使您转到文档中的示例并搜索“ screenprop”一词,您也不会在任何一个示例中看到任何提及screen prop功能的内容。我所看到的所有问题都仅涉及如何在单击按钮时传递道具,这很容易。我想做的事可能吗?我确定我不是唯一使用标签导航器的人,该标签导航器在主屏幕中检索数据并且需要将其传递到其他屏幕。任何建议都会有所帮助。谢谢。

ps。这是我的“登录”类,它正在调用主屏幕:

class SignInScreen extends React.Component {
static navigationOptions = {
  title: 'Please sign in',
};


render() {
  return (


    <View
    style={styles.container}
    contentContainerStyle={styles.contentContainer}>

    <View>
    <SocialIcon
    title='Continue With Facebook'
    button
    type='facebook'
    iconSize="36"
    onPress={this._signInAsync} 
    />
    </View>

  );
}


_signInAsync = async () => {

    let redirectUrl = AuthSession.getRedirectUrl();
    let result = await AuthSession.startAsync({
      authUrl:
        `https://www.facebook.com/v2.8/dialog/oauth?response_type=token` +
        `&client_id=${FB_APP_ID}` +
        `&redirect_uri=${encodeURIComponent(redirectUrl)}`,
    });      

    var token = result.params.access_token
    await AsyncStorage.setItem('userToken', token);

    await fetch(`https://graph.facebook.com/me?fields=email,name&access_token=${token}`).then((response) => response.json()).then((json) => {

          this.props.navigation.navigate('Home',
          {
              UserName : json.name,
              FBID : json.id,
              email : json.email

          });     


    }) .catch(() => {
       console.log('ERROR GETTING DATA FROM FACEBOOK')
      });

};
 }

export default SignInScreen;
杰瑞德

我最终使用了Redux,它只花了我100遍读通并尝试学习它,但是一旦我学会了它,它就是惊人而简单的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在react native>中从一个屏幕导航到另一屏幕?

React-native-将数据从一个屏幕传递到另一个屏幕

在React-Native中使用Drawer-Navigator导航到另一个导航器后,为什么会出现空白屏幕?

将数据从一个屏幕传递到另一个 React-native

从不同导航器(React Native)的另一个屏幕返回时如何刷新屏幕?

在 React Native Tab 导航中导航到另一个屏幕时,如何明确地退出屏幕?

React Native:使用navigationOptions将参数传递到另一个屏幕

如何在React Native中导航到类组件中的另一个屏幕

React Native,从一个组件导航到另一个组件

我正在使用 React-native 和 node js。在收到 Node js 的响应后,我无法从一个屏幕导航到另一个屏幕

将图像源传递到另一个导航-React Native

React Native - 将数据从一个组件传递到另一个

React-Native Stack导航器以相同的initialRouteName返回上一个屏幕

React Native-从另一个屏幕导航后如何将ScrollView滚动到给定位置

无法使用 React Native 将值从一个组件传递到另一个组件

在React Native中从一个视图导航到另一个视图时显示加载

在React Navigation 5中导航到另一个导航器中的屏幕

React-native-navigation从另一个选项卡导航器更改状态

在 React Native 中导航到新屏幕时调用的上一个屏幕

React Native从导航堆栈清除上一个屏幕

在React native中从一个屏幕转到另一个屏幕时,如何用动画进行屏幕过渡?

如何将屏幕从App.js导航到React-Native中的第一个屏幕

一个React Native屏幕可以包含在两个不同的堆栈导航器中吗?

在React-native中使用NavigatiorIOS导航到另一个场景

react native - 如何将参数从一个组件传递到另一个组件?

React Native,将两个值传递给导航中的下一个屏幕

当我在React Native中从其中一个标签页导航到另一个页面时,如何从顶部删除标签栏

React Native从StackNavigator导航到另一个StackNavigator或TabNavigator

使用 React 导航 5 将值从一个函数传递到另一个函数