美文网首页
2019-11-24

2019-11-24

作者: 立陶宛_d5a9 | 来源:发表于2019-11-24 20:16 被阅读0次
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));

相关文章

网友评论

      本文标题:2019-11-24

      本文链接:https://www.haomeiwen.com/subject/zocrwctx.html