私は、初期画面でサーバーから読み込まれたものを持っています。それらを残りのタブ画面に渡したいです。しかし、私はオンラインで例を見つけていません。 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>
);
}
}
できることは、ナビゲーションを返すことができる高次のコンポーネントを作成することです。そのコンポーネントの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); */