ура

я есть реквизиты, которые загружаются с сервера на первом экране. Я хочу передать их остальным экранам вкладок. Однако я не нашел ни одного примера в Интернете. Я знаю о screenProps, но не знаю, как его настроить. Все методы, которые я попробовал, привели к ошибкам.

const EProj = TabNavigator({
  Home: { screen: HomeScreen },
  Map: { screen: MapG },
  Login: { screen: Login },
  Profile: { screen: Profile },
}, {
  tabBarPosition: 'bottom',
  animationEnabled: true,
  tabBarOptions: {
    activeTintColor: '#1abc9c',
  },
});

Это моя настройка экрана. Где я должен разместить screenProps?

<EProj
  screenProps={cats}
/>

Любые хорошие примеры, как настроить это было бы полезно. Заранее спасибо.

Настройка HomeScreen:

class HomeScreen extends React.Component {
  static navigationOptions = {
    tabBarLabel: 'Home',
  };

...

  componentWillMount(){
    console.log("Starting to load assets from server!");
    this.onLoadCats(); /*starts asset loading*/
  }

  render() {
    return (
      <View style={styles.container}>

        <Text>Welcome to alpha 1.17 This is hard system test.</Text>
        <AssetsLoad catsL={this.state.catsL} />
      </View>
    );
  }
}

Ответы на вопрос(1)

Решение Вопроса

это создать компонент более высокого порядка, который может возвращать навигацию, и в этом компонентеcomponentDidMountВы можете загрузить данные и передать их черезscreenProps.

пример

const EProj = TabNavigator({
  Home: { screen: HomeScreen },
  Map: { screen: MapG },
  Login: { screen: Login },
  Profile: { screen: Profile },
}, {
  tabBarPosition: 'bottom',
  animationEnabled: true,
  tabBarOptions: {
    activeTintColor: '#1abc9c',
  },
});

class MainNavigation extends React.Component {
  constructor(props) {
    super(props);
    this.state = {cats: []};
  }
  componentDidMount() {
    this.onLoadCats().then((cats) => this.setState({ cats: cats }));
  }
  render() {
    return(<EProj screenProps={{ cats: this.state.cats}} />
  }
}

// Now you can do in your screens
console.log(this.props.screenProps.cats);

/* This is next line is wrong, please check update above */ 
/* console.log(this.props.navigation.state.params.cats); */
 GhostPengy17 сент. 2017 г., 20:44
Решенная проблема работает отлично. Примечание для будущих начинающих, чтобы получить доступ к реквизитам использовать "this.props.screenProps.cats"
 GhostPengy17 сент. 2017 г., 20:50
Да, я тоже изменил свой ответ. Догадаться.ура
 bennygenel17 сент. 2017 г., 20:48
@EmilsStopins Извините. Я смешал его. Так должно бытьthis.props.screenProps, Я обновляю ответ

Ваш ответ на вопрос