/* eslint-disable no-console */ /* eslint-disable react/jsx-props-no-spreading */ /* eslint-disable no-underscore-dangle */ import * as React from "react"; import { Divider, List, Layout } from "@ui-kitten/components"; import { useFocusEffect } from "@react-navigation/native"; // import { useModel } from "flooks"; import { useBoolean, useCreation } from "@umijs/hooks"; import EmptyComponent from "./EmptyComponent"; export default function ListComponent(props) { const loading = useBoolean(); const refreshing = useBoolean(); const { dataList, getInfo, renderItem, ListHeaderComponent, style, separatorStyle, ListFooterComponent, showEmpty, showList, extraData, initialNumToRender, } = props; function getList() { if (getInfo != null) { return getInfo(); } return Promise.reject(); } // 刷新接口 function onRefresh() { refreshing.setTrue(); getList().finally(() => { refreshing.setFalse(); }); } // 到页面底部加载更多 function gotEnd() { loading.setTrue(); getList().finally(() => { loading.setFalse(); }); } useFocusEffect( React.useCallback(() => { onRefresh(); }, []) ); const showdataList = useCreation(() => { const returnList = []; if (!refreshing.state) { dataList.forEach(value => { returnList.push(value); if (value.children.length > 0) { returnList.push( value.children.map((item, index) => { return { ...item, childIndex: index }; }) ); } }); } return [ ...returnList.flat().map(item => { if (item.amount != null) { item.amount = item.amount.toString(); } return item; }), ]; }, [dataList, refreshing.state]); const changePorps = React.useMemo(() => { let _props = { renderItem: () => }; if (showList !== false) { _props = { renderItem }; if (extraData) { _props = { ..._props, extraData, }; } } return _props; }, [showList, extraData]); const ListEmptyComponent = React.useMemo(() => { if (showEmpty && !refreshing && !loading) { return EmptyComponent; } return <>; }, [showEmpty, refreshing, loading.state]); return ( } onEndReachedThreshold={gotEnd} ListFooterComponent={ListFooterComponent} {...changePorps} /> ); }