请检查代码、
import {
Alert,
} from 'react-native';
checkForSendingOtp = () => {
let hash = 'aBcDeGgd';
Platform.OS === 'android'
? RNOtpVerify.getHash()
.then(text => {
hash = text + ''.replace('[', '');
hash = hash + ''.replace(']', '');
})
.then(() => {
this.sendDataForOtp(hash);
})
.catch(console.log)
: this.sendDataForOtp(hash);
};
sendDataForOtp(hash) {
axios.post(url,{hash:hash}).then(response=>{
Alert.alert(
'Login Failed',
'Multiple Logins Are Found. \n Logout From All Other Devices to Continue.',
[
{
text: 'Proceed ?',
onPress: () => {}
},
{
text: 'No',
onPress: () => {},
},
],
{cancelable: false},
);
});
}
render() {
return (
<Ripple
style={{
position: 'absolute',
top: 0,
bottom: 0,
left: 0,
right: 0,
}}
onPress={this.checkForSendingOtp}
/>
)}
这个片段在android中可以正常工作,但在iOS中不会显示。为什么?
Nb:-这是我现在可以分享的最多的代码,编辑过的代码请现在检查,如果你有任何问题,请告诉我。
5条答案
按热度按时间b4lqfgs41#
我不知道到底发生了什么,还有一个模型组件,我用来显示自定义加载,删除模型组件后,警报开始工作。
gstyhher2#
将警报代码替换为以下代码
64jmpszr3#
6qqygrtg4#
在我的例子中,我没有使用任何自定义
Modal
,因为对于自定义Modal
,解决方案很简单,只需等到Modal
关闭,但是,我使用了react-native
Spinner
组件,并且使用visible={loading}
属性正确地隐藏了它,是的,在Alert.alert
配置中设置cancelable: false
后,问题也没有得到解决,当我将超时增加到5000
时,即使没有在Alert.alert
配置中定义cancelable: false
,它也能正常工作,但大量超时对UX,所以我很快检查了Spinner
组件 prop ,我知道它确实有cancelable?: boolean | undefined
prop ,所以现在当我使用Spinner
组件时,它甚至没有超时。**TLDR:**使用
cancelable={true}
prop 和Spinner
组件。pvabu6sv5#
大概和这个问题有关:https://github.com/facebook/react-native/issues/10471
出于一些奇怪的原因,在“setTimeout”函数中调用Alert可以使它工作。但这显然不是避免这个问题的最佳方法。您也可以尝试以下解决方案:https://github.com/facebook/react-native/issues/10471#issuecomment-513641325