Мне действительно нужна помощь с ловушками в реагировать на родные ...
У меня есть ActionSheet, который включает один из параметров, которые должна открывать функция камеры с помощью функции "useCamera".
«useCamera» находится в другой функции (в другом файле), используя библиотеку «ImagePicker». (указать c «ImagePicker.launchCamera»)
«ImagePicker.launchCamera» установить fileUri в обратном вызове, в то время как функция ничего не возвращает.
Итак, чтобы получить доступ к файлу Uri, я попытался использовать useState Hook, но получаю сообщение «ERROR: Invalid Hook call.Hooks можно вызывать только внутри тела функции ...», но ловушку внутри функции bodY!
Код ActionSheet:
import {useCamera} from './PhotoHandle';
// export default class EditProfilePic extends React.Component {
function EditProfilePic(props) {
const [ActionSheetRef, setActionSheetRef] = useState(null);
const [fileDate, setFileDate] = useState(null);
return (
<View style={styles.images_container}>
<TouchableOpacity
style={styles.click_edit_icon}
onPress={() => ActionSheetRef.show()}>
<Image style={styles.editIcon} source={editIcon} />
</TouchableOpacity>
<Image source={props.profileSource} style={styles.image} />
<ActionSheet
ref={o => setActionSheetRef(o)}
title={
<Text style={{color: '#000', fontSize: 18}}>
Which one do you like?
</Text>
}
options={['Select from Photos', 'Camera', 'Cancel']}
cancelButtonIndex={2}
destructiveButtonIndex={2}
onPress={index => {
//camera
if (index == 1) {
useCamera()
}
}}
/>
</View>
);
}
Функция LaunchCamera:
export function useCamera() {
const [fileData, setFileData] = useState(null);
let options = {
storageOptions: {
skipBackup: true,
path: 'images',
},
};
ImagePicker.launchCamera(options, response => {
console.log('coolio' + response);
if (response.didCancel) {
console.log('User cancelled image picker');
} else if (response.error) {
console.log('ImagePicker Error: ', response.error);
} else if (response.customButton) {
console.log('User tapped custom button: ', response.customButton);
alert(response.customButton);
} else {
setFileData(response.data);
}
});
return fileData;
}
Я пытался вызвать useCamera ( ) как "",
Я изменил анонимную функцию просто на функцию.
Я пытался вызвать useCamera () из другой части кода (не из onPress).
Я пытался используйте Context и Redux.
ВСЕ ОДИНАКОВАЯ ОШИБКА.
, пожалуйста, помогите мне,
Спасибо!