Index.js:
javascript
import React from 'react'
import {
View,
Text,
ScrollView,
Image,
Modal,
TouchableWithoutFeedback,
} from 'react-native'
import useList from './useList'
import moment from 'moment'
import { Icon } from '../../../../component/light'
import ImageViewer from 'react-native-image-zoom-viewer'
import styles from './styles'
export default function Home(props) {
const {
userInfo,
isModelVisible,
handleShowModel,
handleHideModel,
handleJumpPage,
handleQuit,
} = useList(props)
return (
<ScrollView style={styles.mMeScrollView}>
<View style={styles.mMeWrap}>
<TouchableWithoutFeedback onPress={() => handleJumpPage('1')}>
<View style={styles.mMeUserInfoWrap}>
<View style={styles.mMeUserInfoMain}>
<TouchableWithoutFeedback onPress={() => handleShowModel()}>
<Image
source={{ uri: userInfo.avatarCdn }}
style={styles.mMeAvatar}
resizeMode="stretch"
></Image>
</TouchableWithoutFeedback>
<View style={styles.mMeUserInfoMainInfo}>
<View style={styles.mMeNicknameWrap}>
<Text
style={styles.mMeNickname}
ellipsizeMode="tail"
numberOfLines={1}
>
{userInfo.nickname}
</Text>
{userInfo.isVipStatus ? (
<Icon name="vip" style={styles.mMeVipIcon}></Icon>
) : null}
</View>
<View style={styles.mMeUsernameWrap}>
<Text
style={styles.mMeUsername}
ellipsizeMode="tail"
numberOfLines={1}
>
账号:{userInfo.username}
</Text>
</View>
</View>
<View style={styles.mMeArrowIconWrap}>
<Icon name="arrow" style={styles.mMeArrowIcon}></Icon>
</View>
</View>
<View style={styles.mMeDueDateWrap}>
{userInfo.isVipStatus === true ? (
<Text style={styles.mMeDueDate}>
有效期至{moment(userInfo.dueDate - 0).format('YYYY-MM-DD')}
</Text>
) : userInfo.isVipStatus === false ? (
<Text style={styles.mMeDueDate}>VIP已经过期</Text>
) : null}
</View>
</View>
</TouchableWithoutFeedback>
<TouchableWithoutFeedback onPress={handleQuit}>
<View style={styles.mMeQuitWrap}>
<Text style={styles.mMeQuitText}>退出登录</Text>
</View>
</TouchableWithoutFeedback>
</View>
<Modal visible={isModelVisible} transparent={true}>
<ImageViewer
imageUrls={[
{
url: userInfo.avatarCdn,
},
]}
onClick={() => handleHideModel()}
/>
</Modal>
</ScrollView>
)
}
javascript
import { useState, useEffect } from 'react'
import { useNavigation } from '@react-navigation/native'
import Api from '../../../../api'
export default function useList() {
const navigation = useNavigation()
const [userInfo, setUserInfo] = useState({})
const [isModelVisible, setIsModelVisible] = useState(false)
const handleGetUserInfo = () => {
Api.h5.userGetInfo({ isLoading: false }).then((res) => {
if (res.code === 200) {
let userInfo = res.data
setUserInfo(userInfo)
console.log(userInfo)
}
})
}
const handleShowModel = () => {
setIsModelVisible(true)
}
const handleHideModel = () => {
setIsModelVisible(false)
}
//跳转
const handleJumpPage = (path) => {
console.log(path)
}
const handleQuit = () => {
navigation.navigate('Login')
}
useEffect(() => {
handleGetUserInfo()
// eslint-disable-next-line
}, [])
return {
userInfo,
isModelVisible,
handleShowModel,
handleHideModel,
handleJumpPage,
handleQuit,
}
}
参考链接:
https://www.npmjs.com/package/react-native-image-zoom-viewer