React Native - "type" Alert 组件方法是什么意思?



我是 React Native 的新手,当我阅读有关 Alert 组件的信息时,我看到了alert方法static alert(title, message?, buttons?, options?, type?)

脸书给出的例子:

Alert.alert(
//Title
'Alert Title',
//Message
'My Alert Msg', 
//Button
[
{text: 'Ask me later', onPress: () => console.log('Ask me later pressed')},
{text: 'Cancel', onPress: () => console.log('Cancel Pressed'), style: 'cancel'},
{text: 'OK', onPress: () => console.log('OK Pressed')},
],
//Options
{ cancelable: false } 
)

而且没有关于type做什么的例子,有人可以告诉我那些type是什么?

有没有办法在没有Title的情况下显示Alert

我阅读了源代码,发现type是一个字符串,定义为:

type AlertType = "default" | "plain-text" | "secure-text" | "login-password";

但是,我尝试了所有这些,我没有看到任何区别。因此,我做了一个猜测:也许它仅适用于Android,而不是iOS,但发现Android中的Alert被定义为:

export interface AlertAndroidStatic {
alert: (
title: string,
message?: string,
buttons?: AlertButton[],
options?: AlertOptions
) => void;
}

不接受type参数。然后,我继续阅读另一个类似的 iOS 原生 API 仅称为AlertIOS,它有 2 种用法,首先,与AlertAPI 相同,您只需

AlertIOS.alert(title, message, buttons, type)

但评论说:

@param类型 已弃用,请勿使用

AlertIOS的第二个用法是:

AlertIOS.prompt(title, message, buttons, type, defaultValue)

在您提示用户输入的地方,在这里,参数type有效,如果您希望用户以纯文本形式输入一行,那么type应该是"纯文本",如果一行是安全文本,那么"安全文本",如果是登录凭据,那么type应该是"登录密码"。请注意,对于 Android,您无法使用Alert提示用户输入,并且AlertIOS仅适用于 iOS。

结论:我不知道为什么typeAlertAPI 的第 4 个参数,对于 Android 来说,这个参数被简单地忽略了,而对于 iOS 来说,这个参数没有任何区别。我的猜测是,在 react native 刚刚问世的早期,他们并没有编写一个名为AlertIOS的 API,相反,他们只有Alert。由于提示用户输入适用于 iOS 设备,但不适用于 Android 设备,因此他们将type作为第 4 个参数,但如果应用程序在 Android 设备上运行,则忽略它。随着时间的推移,他们制作了一个名为AlertIOS的 API ,专门用于 iOS 警报,但尚未弃用type参数。无论如何,只需忽略参数即可。

回答您的另一个问题:有没有办法显示没有标题的警报?

是的,如果您不想要标题或消息,只需将null传递给 API 调用即可。

export interface AlertAndroidStatic {
alert: (
title: string,
message?: string,
buttons?: AlertButton[],
options?: AlertOptions
) => void;
}

最新更新