刘曙尘

导航

111

import React, {Component} from 'react';
import {Image, StyleSheet, Text, View} from 'react-native'
import Swiper from 'react-native-swiper';
import Touchable from "../../component/Touchable";
import {DEVICE_WIDTH, getRealDP as dp} from "../../utils/screenUtil";
import Color from "../../utils/Color";
import {showToast} from '../../utils/Utility'
import NavigationUtils from '../../navigator/NavigationUtils'

export default class HomeMenu extends Component {

    constructor(props) {
        super(props);
        this.state = {
            menuSize: 8,
            menuListItem: [],
        }
    }

    //处理点击跳转
    _onJump = (item) => {
        //点击跳转类型jumpType 0:点击没有反应 1:点击跳转app内部路由 2:跳转H5
        if (item.jumpType === 0) {

        } else if (item.jumpType === 1) {
            //判断路由是否存在
            try {
                NavigationUtils.goPage({}, item.jumpLink)
            } catch (e) {
                showToast('升级后尝试....')
            }
        } else {
            showToast('升级后尝试')
        }
    }

    //加载菜单数据
    loadMenuListItem = (menuList) => {
        let newMenuListItem = []
        //封装数据
        menuList.map((item, index) => {
            newMenuListItem.push(<Touchable
                style={[styles.slidelItem, {height: dp(200)}]}
                key={index}
                onPress={() => {
                    this._onJump(item)
                }}>
                <Image source={{uri: item.menuImage}}
                       style={styles.slidelIcon}/>
                <Text style={styles.slidelText}>
                    {item.menuName}
                </Text>
            </Touchable>)
        })
        let menuListItem = []
        while (newMenuListItem.length > 0) {
            if (newMenuListItem.length > this.state.menuSize) {
                menuListItem.push(newMenuListItem.slice(0, this.state.menuSize))
                newMenuListItem.splice(0, this.state.menuSize);
            } else {
                menuListItem.push(newMenuListItem);
                newMenuListItem = [];
            }
        }
        return menuListItem;
    }

    render() {
        const {menuList} = this.props;
        const menuListItem = this.loadMenuListItem(menuList);
        if (menuListItem.length === 0) {
            return null;
        }
        return (
            <View style={{
                height: menuList.length > 4 ? 250 : 250 / 2,
                backgroundColor: Color.WHITE
            }}>
                <Swiper>
                    {
                        menuListItem.map((info, index) => {
                            return (<View key={index} style={{
                                flexDirection: 'row',
                                flexWrap: 'wrap',
                                width: DEVICE_WIDTH
                            }}>
                                {info}
                            </View>)
                        })
                    }
                </Swiper>
            </View>
        );
    }
}
//样式
const styles = StyleSheet.create({
    slidelItem: {
        width: DEVICE_WIDTH / 4,
        justifyContent: 'center',
        alignItems: 'center',

    },
    slidelIcon: {
        width: dp(80),
        height: dp(80),
    },
    slidelText: {
        marginTop: dp(10),
        fontSize: dp(28),
    },
})

 

posted on 2020-06-18 20:09  刘曙尘  阅读(256)  评论(0编辑  收藏  举报