#javascript #react-native #expo
#javascript #react-native #expo
Вопрос:
Я использую expo-camera
в своем приложении React Native. Я успешно смог делать фотографии с камеры и получать uri
, но я хочу, чтобы мое приложение сохраняло каждую сделанную фотографию в массиве. Вот код, в котором я делаю снимок и сохраняю текущую фотографию каждый раз:
//Here's the onpress on a button in a different component of taking photo
<TouchableOpacity
onPress={async () => {
let photo = await cameraRef.takePictureAsync();
props.setImage(photo);
props.setModalVisible();
}}
>
//Here's the component for image show
export default function ImagePickerExample() {
const [image, setImage] = useState(null);
const [camera, setShowCamera] = useState(false);
const [hasPermission, setHasPermission] = useState(null);
const [list, setList] = useState([]);
useEffect(() => {
(async () => {
const { status } = await Camera.requestPermissionsAsync();
setHasPermission(status === "granted");
})();
}, []);
if (hasPermission === null) {
return <View />;
}
if (hasPermission === false) {
return <Text>No access to camera</Text>;
}
return (
<View>
<View>
<TouchableOpacity onPress={()=>{setShowModal(true);}}>
<Image
source={{ uri: image }} style={{ width: 120, height: 120 }}/>
</TouchableOpacity>
</View>
<View style={{marginTop: 20 }}>
<Button
onPress={() => {setShowCamera(true);}}
title="Camera"
/>
</View>
{camera amp;amp; (
<CameraModule
showModal={camera}
setModalVisible={() => setShowCamera(false)}
setImage={(result) => setImage(result.uri)}
setList={(result) => setList(result.uri)}
/>
)}
</View>
);
}
Здесь я показываю только одно изображение, но я хочу показать каждое изображение, которое я беру из приложения. Как я могу сохранить каждое изображение, которое я беру, в массиве из этого кода.
Комментарии:
1. попробуйте
setList={(result) => setList([...list, ...result.uri])}
вместоsetList={(result) => setList(result.uri)}
2. setList={(result) => setList([…list, …result.uri])} это возвращает разрозненные данные, но setList={(result) => setList([…list, result.uri])} теперь все возвращается нормально.