React Native - Alert 组件方法中的“类型”意味着什么?

fli*_*lix 4 alert react-native

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

facebook 给出的例子:

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 } 
)
Run Code Online (Sandbox Code Playgroud)

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

有没有办法显示Alert没有Title

K.W*_*.Wu 5

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

type AlertType = "default" | "plain-text" | "secure-text" | "login-password";
Run Code Online (Sandbox Code Playgroud)

但是,我尝试了所有这些,我没有看到任何差异。因此,我猜测:也许它只适用于Android,而不适用于iOS,但发现Alert在Android中定义为:

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

其中type不接受参数。然后,我继续阅读另一个类似的仅限 iOS 的 React Native API ,它有 2 个用法,第一,与APIAlertIOS相同,你只需Alert

AlertIOS.alert(title, message, buttons, type)
Run Code Online (Sandbox Code Playgroud)

但评论说:

@param type 已弃用,请勿使用

的第二个用法AlertIOS是:

AlertIOS.prompt(title, message, buttons, type, defaultValue)
Run Code Online (Sandbox Code Playgroud)

提示用户输入的地方,这里,参数type起作用,如果你希望用户以纯文本输入一行,那么type应该是“plain-text”,如果是安全文本一行,那么应该是“secure-text”,如果是登录凭据,则应type为“登录密码”。请注意,对于 Android,您无法使用 提示用户输入Alert,并且AlertIOS仅适用于 iOS。

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

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

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