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(true)
: 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) => (
))}
);
}