React native Alert是否可以等待用户的响应(就像暂停应用程序一样),而不是仅仅弹出窗口,并继续以下逻辑?
我认为js alert会暂停应用程序。
发布于 2018-10-16 06:40:30
下面是您可以使用Alert
执行的操作
您可以将cancelable设置为false,这样用户就无法在不按下按钮的情况下关闭警报
您可以为每个按钮设置一个回调。
此外,您还可以使用Promise包装Alert,以便使用async
const AsyncAlert = () => {
return new Promise((resolve, reject) => {
Alert.alert(
'Title',
'Message',
[
{text: 'YES', onPress: () => resolve('YES') },
{text: 'NO', onPress: () => resolve('NO') }
],
{ cancelable: false }
)
})
}
// Then to use the method
const userResponse = await AsyncAlert()
// ...the rest of your code
发布于 2018-10-26 04:17:21
我使用@Tareq El-Masri代码并对其进行了编辑。将其更改为异步函数将起作用。
const AsyncAlert = (title, msg) => new Promise((resolve) => {
Alert.alert(
title,
msg,
[
{
text: 'ok',
onPress: () => {
resolve('YES');
},
},
],
{ cancelable: false },
);
});
await AsyncAlert();
发布于 2019-10-21 13:56:56
虽然其他答案几乎是正确的,但它们仍然需要读者操纵要在自己的代码中使用的函数(例如。以改变按钮等)。这是一个很好的可导出版本,它允许你传入一个函数来创建你需要的任何按钮设置:
import { Alert as NativeAlert } from 'react-native';
const defaultButtons = (resolve, reject) => [
{
text: 'OK',
onPress: () => {
resolve();
},
},
];
const AsyncAlert = (title, msg, getButtons = defaultButtons) =>
new Promise((resolve, reject) => {
NativeAlert.alert(title, msg, getButtons(resolve, reject), { cancelable: false });
});
export default AsyncAlert;
像这样使用:
await AsyncAlert('Some Title', 'Some message.')
如果你想要自定义按钮,只需传递一个函数作为第三个参数(如果你需要的话,这个参数会得到resolve和reject。
https://stackoverflow.com/questions/52825503
复制相似问题