import * as React from 'react' import { Text, Button, View, StyleSheet, FlatList, ListRenderItemInfo, Image, TouchableOpacity, DeviceEventEmitter, EmitterSubscription, } from 'react-native' import { BirthdayAddName, BirthdayDetailName, BirthdayRefreshNotify, RootTabScreenProps, } from '../../Common/define/Defines' import BirthdayDataManager from '../data/BirthdayDataManager' import BirthdayData from '../data/BirthdayData' import BirthdayItem from './BirthdayItem' import JSONTool from '../../Common/tool/JSONTool' interface StateType { dataList: Array } export default class Birthday extends React.Component, StateType> { refreshNotify: EmitterSubscription | null = null constructor(props: any) { super(props) this.state = { dataList: [], } props.navigation.setOptions({ headerRight: this._headerRight.bind(this), }) } _headerRight = (): React.ReactNode => { return ( ) } _onPressNaviRight = () => { const navigation = this.props.navigation navigation.navigate(BirthdayAddName) } async componentDidMount() { const dataList = await BirthdayDataManager.getDataList() this.setState({ dataList: dataList, }) this._addListener() } componentWillUnmount(): void { this._removeListener() this.setState = () => {} } _addListener = () => { this.refreshNotify = DeviceEventEmitter.addListener(BirthdayRefreshNotify, this._refreshNotify.bind(this)) } _removeListener = () => { this.refreshNotify && this.refreshNotify.remove() this.refreshNotify = null } _refreshNotify = async () => { const dataList = await BirthdayDataManager.getDataList() console.info('dataList: ' + JSONTool.prettyString(dataList)) this.setState({ dataList: dataList, }) } render() { const navigation = this.props.navigation const dataList = this.state.dataList const showAddBtn = dataList.length <= 0 return ( {showAddBtn ? (