Передача реквизита в файл маршрута из приложения js в react native - PullRequest
0 голосов
/ 03 августа 2020

Я должен показать зарегистрированного пользователя в моем приложении. Я могу получить информацию о пользователе в App.js, нужно передать данные пользователя в Route.js. Я настроил маршруты в другом файле. Я настроил свои маршруты как

import { createAppContainer, createSwitchNavigator } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';
import { createDrawerNavigator, DrawerItems } from 'react-navigation-drawer';
import Icon from 'react-native-vector-icons/FontAwesome';
// screens
import Login from '../screens/login';
import Logout from '../screens/logout';
import activity from '../screens/activity';
import addActivity from '../screens/addActivity';
import AuthLoadingScreen from '../screens/authLoading';
import OrganizationScreen from '../screens/organization';
import ContactScreen from '../screens/contact';
import AllContact from '../screens/allcontact';
import ContactAdd from '../screens/contactAdd';
import OrganizationAdd from '../screens/organizationAdd';
import DealForm from '../screens/dealForm';
import MyDeals from '../screens/mydeals';
import Mis from '../screens/mis';
import Misgraph from '../screens/misgraph';
import Deals from '../screens/deals';
import Dashboard from '../screens/dashboard';
import AddTarget from '../screens/addTarget';
import AddDeal from '../screens/addDeal';
import { Container, Header, Body, Content, Text} from 'native-base';
export const AuthStack = createStackNavigator(
  {
    Register: {
      screen: Login,
    },
  },
  {
    headerMode: 'none',
  },
);
export const DashboardStack = createStackNavigator(
  {
    Dashboard: {
      screen: Dashboard,
    },
    AddTarget: {
      screen: AddTarget,
    },
    AddDeal: {
      screen: AddDeal,
    },
  },
  {
    initialRouteName: 'Dashboard',
    headerMode: 'none',
  },
);
const CustomDrawerContentComponent = (props) => (
  <Container>
    <Header style={{ backgroundColor: 'grey'}}>
      <Body>
        <Text> <Icon name="user" color="#fff" size={20} /></Text>
      </Body>
    </Header>
    <Content>
      <DrawerItems {...props} />
    </Content>
  </Container>
)
export const Drawer = createDrawerNavigator({
  Dashboard: {
    screen: DashboardStack,
  },
  Deal: {
    screen: DealForm,
  },
  MyDeal: {
    screen: MyDealStack,
    navigationOptions: {
      drawerLabel: 'My Deals',
    },
  },
  Organization: {
    screen: OrganizationStack,
  },
  Contact: {
    screen: ContactStack,
  },
  Performance: {
    screen: MisStack,
  },
  Logout: {
    screen: Logout,
  },
},
  {
    initialRouteName: 'Dashboard',
    contentComponent: CustomDrawerContentComponent,
    contentOptions: {
      activeTintColor: '#fff',
      activeBackgroundColor: '#075E54',
    }
  }
);
export default createAppContainer(
  createSwitchNavigator(
    {
      AuthLoading: AuthLoadingScreen,
      App: Drawer,
      Auth: AuthStack,
    },
    {
      initialRouteName: 'AuthLoading',
    },
  ),
);

и приложение js как

import AsyncStorage from '@react-native-community/async-storage';
import Splash from './app/screens/splash';
import { Root } from 'native-base';
import Route from './app/Route/Route';

export default class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      isloggedIn: false,
      isLoading: true,
      user: {}
    };
  }
  loginStatusCheck = async () => {
    const userToken = await AsyncStorage.getItem('@accessToken');
    const user = await AsyncStorage.getItem('@userData');
    let userData = JSON.parse(user);
    if (userToken) {
      this.setState({ isloggedIn: true, isLoading: false, user: userData });
    } else {
      this.setState({ isloggedIn: false, isLoading: false });
    }
  };
  render() {
    return (
      <Root>
        <Route screenProps={{
          hello: "World"
        }}/>
      </Root>
    );
  }
}

Как передать данные пользователя в CustomDrawerContentComponent, присутствующий в Route.js? использовал ScreenProps для отправки в файл маршрута, но как получить к нему доступ? Это не компонент класса.

1 Ответ

1 голос
/ 03 августа 2020

Вы ищете это, Для доступа к пользовательским данным в маршруте

this.props.screenProps

Для передачи данных в CustomDrawerContentComponent

<CustomDrawerContentComponent userData={this.props.screenProps}/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...