import React, { useEffect, useState } from "react"; import { Image, StyleSheet, Text, View } from "react-native"; import { images } from "../../../../assets"; import { pxTransform } from "../../../../../../utils"; import type { Book } from '../../../../../../typings/book'; function randCover() { const array = [images.cover1, images.cover2, images.cover3, images.cover4]; const randNum = Math.floor(Math.random() * array.length); return array[randNum]; } export default function BookCard({ index = 1, dataSource }: { index: number, dataSource?: Book }) { const [realCover, setRealCover] = useState(dataSource?.cover || randCover()); useEffect(() => { if (dataSource?.cover?.replace(/\s*/g, "")) { setRealCover(dataSource?.cover); } else { setRealCover(randCover()); } }, [dataSource?.cover]) return ( setRealCover(randCover())} /> {index} {dataSource?.repayCount ? `借阅${dataSource.repayCount}次` : `热门借阅`} {dataSource?.title || '归还书籍'} ) } const style = StyleSheet.create({ main: { position: 'relative', marginTop: pxTransform(26), width: pxTransform(176), height: pxTransform(250), borderRadius: pxTransform(20), overflow: 'hidden' }, cover: { position: 'absolute', width: "100%", height: "100%" }, header_box: { display: "flex", flexDirection: 'row', justifyContent: 'center', alignItems: 'center', position: 'absolute', top: 0, left: 0, width: "100%", height: pxTransform(42.4), backgroundColor: `rgba(238,240,241,0.6)` }, rank_box: { width: pxTransform(21), height: pxTransform(21), borderRadius: pxTransform(21), display: 'flex', flexDirection: 'row', alignItems: 'center', justifyContent: 'center', backgroundColor: `#FFFFFF` }, rank_text: { fontSize: pxTransform(16), color: `#FFFFFF`, fontWeight: '400' }, count: { marginLeft: pxTransform(15), fontSize: pxTransform(16), color: `#111111`, fontWeight: '400' }, bottom_box: { display: "flex", flexDirection: 'row', justifyContent: 'center', alignItems: 'center', position: 'absolute', bottom: 0, left: 0, width: "100%", height: pxTransform(42.4), backgroundColor: `rgba(255,254,254,0.8)` }, title: { color: `#111111`, fontSize: pxTransform(24), fontWeight: '400' } })