import React, { Component } from 'react'
import { View, Button, Text } from 'react-native'
import { createStackNavigator, createAppContainer } from 'react-navigation'
class Test1 extends Component {
render() {
return (
<View>
<Text>Test1</Text>
<Text>store:{this.props.store.nub}</Text>
<Button
title='跳转2'
onPress={() => {
this.props.navigation.navigate('Test02')
}}
/>
</View>
)
}
}
class Test2 extends Component {
render() {
return (
<View>
<Text>Test2</Text>
<Text>store:{this.props.store.nub}</Text>
<Button
title="跳转1"
onPress={() => {
this.props.navigation.navigate("Test01");
}}
/>
</View>
);
}
}
function PackClass(Element: any, Store: any) {
class Pack extends Component {
render() {
return <Element {...this.props} store={Store} />;
}
}
return Pack
}
class Store1{
nub: string = 'Store1的数据'
}
class Store2 {
nub: string = "Store2的数据";
}
const routeModular = [
{
path: "Test01",
route: Test1,
store: Store1
},
{
path: "Test02",
route: Test2,
store: Store2
}
];
const App = routeModular => {
const config = routeModular.reduce(function(prev, cur) {
const { path, route, store } = cur;
const _store = new store();
return {
...prev,
[path]: {
screen: PackClass(route, _store),
navigationOptions: ({}) => ({
title: `这是${path}的标题`
})
}
};
}, {});
return createStackNavigator(config, {
initialRouteName: Object.keys(config)[0],
headerMode: "screen"
});
};
export default createAppContainer(App(routeModular));
网友评论