如何解决如何使用useEffect要求2个useStates的许可
我想同时请求camera和camera_roll的许可。一旦我添加了camera_roll权限的代码,相机权限就不再运行。
swap:
mov eax,[rdi] ; *a to EAX
xchg eax,[rsi] ; Exchange *a with *b
mov [rdi],eax ; EAX to *a
ret
const [hasPermission,setHasPermission] = useState(null);
const [rollPermision,setRollPermission] = useState(null);
如果许可失败...相信我这里的if语句太多,但我不知道怎么做
useEffect(() => {
(async () => {
getpermission()
const { status } = await Camera.requestPermissionsAsync();
setHasPermission(status === "granted");
// camera roll
const { cam_roll } = await Permissions.askAsync(Permissions.CAMERA_ROLL);
setRollPermission(cam_roll === "granted");
}
)();
},[]);
解决方法
那里的useReducer钩子似乎是一个更好的选择。想您将用它创建更优雅的API。
,改善用户体验的更好方法是:
const [hasPermission,setHasPermission] = useState(false);
const [rollPermision,setRollPermission] = useState(false);
我认为Permissions.CAMERA_ROLL仅对于iOS是必需的。
useEffect(() => {
(async () => {
getpermission()
const { status } = await Camera.requestPermissionsAsync();
setHasPermission(status === "granted");
// camera roll
if (Constants.platform.ios) {
const { cam_roll } = await Permissions.askAsync(Permissions.CAMERA_ROLL);
setRollPermission(cam_roll === "granted");
} else {
setRollPermission(true);
}
}
)();
},[]);
if (!hasPemission || !rollPermision) {
return (
<View>
<Text style={styles.text}>To acess the camera,yoou need:</Text>
{!hasPermission && (
<TouchableHighlight onClick={handleAskPemission('CAMERA')>
<Text style={styles.text}>Camera Roll permission</Text>
</TouchableHighlight>
)}
{!rollPermision && Constants.platform.ios && (
<TouchableHighlight onClick={handleAskPemission('CAMERA_ROLL')>
<Text style={styles.text}>Camera Roll permission</Text>
</TouchableHighlight>
)}
</View>
)
}
return <CameraView />
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。