我是新手,所以这让我很难过。我正在尝试构建一个表单屏幕,允许用户填写他们的详细信息并提供图片。我成功添加了一个平面列表,其中显示了相机捕获的一系列图像。现在我想将图像数组连同详细信息一起发送到 firebase,但我似乎无法让它工作。请帮忙。
const [title, setTitle] = useState('')
const [brand, setBrand] = useState('')
const [modelNo, setModelNo] = useState('')
const [imeiNo, setImeiNo] = useState('')
// Camera
const [hasCameraPermission, setHasCameraPermission] = useState(null);
const isFocused = useIsFocused()
const [cameraRef, setCameraRef] = useState(null);
const [showCamera, setShowCamera] = useState(false);
const [imageArray, setImageArray] = useState([]);
const [imageUri, setImageUri] = useState([]);
const [urls, setUrls] = useState("");
const [isCameraReady, setIsCameraReady] = useState(false);
const [cameraType, setCameraType] = useState(Camera.Constants.Type.back);
const [cameraFlash, setCameraFlash] = useState(Camera.Constants.FlashMode.off);
useEffect(() => {
(async () => {
const cameraStatus = await Camera.requestCameraPermissionsAsync();
setHasCameraPermission(cameraStatus.status === 'granted');
})();
}, []);
const takePicture = async() => {
if (cameraRef) {
const options = {quality: 1, base64: true,};
const data = await cameraRef.takePictureAsync(options);
setImageUri(data.uri);
setImageArray([...imageArray, data.uri]);
}
setShowCamera(false);
}
// OnSubmit
const [requestRunning, setRequestRunning] = useState(false);
const dispatch = useDispatch();
const uploadImage = async () => {
setRequestRunning(true)
const childPath = `assets/${firebase.auth().currentUser.uid}/mobileDevices/${uuid()}`
const response = await fetch(imageArray);
const blob = await response.blob();
const snapshot = await firebase.storage().ref().child(childPath).put(blob);
const downloadURL = await snapshot.ref.getDownloadURL();
return downloadURL;
}
const handleSaveAsset = async () => {
await Promise.all(imageArray.map(p=>uploadImage(imageArray)))
.then(() => { navigation.dispatch(StackActions.popToTop()) })
.catch(() =>setRequestRunning(false))
}```