【发布时间】:2021-08-30 16:03:42
【问题描述】:
我正在编写一个相机应用程序。因此,当用户进入相机页面时,他们可以选择是否授予相机权限。我将他们的决定保存在变量 const [hasPermission, setHasPermission] = useState(null);我当前的使用效果函数中:
useEffect(() => {
(async () => {
const { status } = await Camera.requestPermissionsAsync();
const audioPermissions = await Audio.requestPermissionsAsync();
if (
cameraPermissions.status === "granted" &&
audioPermissions.status === "granted"
) {
setHasPermission(true);
}
})();
}, []);
当用户第一次运行应用程序时,这目前可以正常工作 - 他们授予权限,就是这样 - 我可以使用相机!
但是.....如果他们不授予许可怎么办。他们决定不使用相机,他们拒绝访问,后来他们改变了主意。例如 5 分钟后,他们再次打开“相机”页面并想要授予权限。这是我的问题。在当前情况下useEffect,即当您最初加载页面时,使用相机的请求将只显示一次。如果用户还没有授予权限,我如何强制它再次弹出?
我尝试了以下方法:
useEffect(() => {
(async () => {
const { status } = await Camera.requestPermissionsAsync();
const audioPermissions = await Audio.requestPermissionsAsync();
if (
cameraPermissions.status === "granted" &&
audioPermissions.status === "granted"
) {
setHasPermission(true);
}
})();
}, [hasPermission === null]);
但它没有工作。有什么建议吗?
【问题讨论】:
-
如果该组件在 5 分钟后导航到它时没有重新安装,那么您需要找到一种方法来挂钩到导航事件,无论您使用什么导航,而不是简单的
useEffect.
标签: javascript reactjs react-native use-effect