import { View, TouchableOpacity, Image } from "react-native"; import React, { useState, useEffect } from "react"; import { useTailwind } from "tailwind-rn"; import { Icon } from "@rneui/themed"; import MediaPickerModal from "../MediaPickerModal"; import Toast from "react-native-toast-message"; /* props格式: type 选择的媒体类型 "image"|"video"|"mix" maxCount 最大选择数量 setAssets 向父组件返回媒体 */ export default function MediaPicker({ maxCount, type, setAssets }) { const tailwind = useTailwind(); const [modalVisible, setModalVisible] = useState(false); const [newAssets, setNewAssets] = useState([]); const [_assets, set_Assets] = useState([]); //当newAssets改变的时候添加新数据到assets useEffect(() => { set_Assets([..._assets, ...newAssets]); setAssets([..._assets, ...newAssets]); }, [newAssets]); //加号选择器 const Picker = () => { return ( { //数量检查 maxCount - _assets.length !== 0 ? setModalVisible(!modalVisible) : Toast.show({ type: "error", text1: `已达到最大选择数量`, topOffset: 60, }); }} style={{ aspectRatio: 1, ...tailwind("w-1/4 p-1"), }} > ); }; //展示已选择媒体 const DisplayMedia = ({ asset, index }) => { const handleDelete = () => { const updatedAssets = [..._assets]; updatedAssets.splice(index, 1); set_Assets(updatedAssets); setAssets(updatedAssets); }; return ( ); }; return ( {_assets.map((asset, index) => ( ))} ); }