我是 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 种用法,首先,与Alert
API 相同,您只需
AlertIOS.alert(title, message, buttons, type)
但评论说:
@param类型 已弃用,请勿使用
AlertIOS
的第二个用法是:
AlertIOS.prompt(title, message, buttons, type, defaultValue)
在您提示用户输入的地方,在这里,参数type
有效,如果您希望用户以纯文本形式输入一行,那么type
应该是"纯文本",如果一行是安全文本,那么"安全文本",如果是登录凭据,那么type
应该是"登录密码"。请注意,对于 Android,您无法使用Alert
提示用户输入,并且AlertIOS
仅适用于 iOS。
结论:我不知道为什么type
是Alert
API 的第 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;
}