React Native - что означает «тип» для метода компонента Alert? - PullRequest
0 голосов
/ 31 мая 2018

Я новичок в 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 } 
)

и нет примера о том, что делает type, кто-то может сказать мне, для чего эти type?

и есть ли способ показать Alert без Title * * 1016

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018
export interface AlertAndroidStatic {
    alert: (
        title: string,
        message?: string,
        buttons?: AlertButton[],
        options?: AlertOptions
    ) => void;
}
0 голосов
/ 31 мая 2018

Я прочитал исходный код и обнаружил, что type является строкой, определенной как:

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

Однако, я попробовал все из них, я не вижу различий.Поэтому я предположил: возможно, это только для Android, а не для iOS, но обнаружил, что Alert в Android определяется как:

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

, где type параметр не принимается.Затем я продолжил читать еще один подобный нативный API-интерфейс реакции для iOS под названием AlertIOS, который имеет 2 использования, во-первых, то же самое, что и Alert API, вы просто

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

Но в комментарии говорится:

@ тип параметра Устаревший, не используйте

Второе использование AlertIOS:

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

, где вы запрашиваете ввод данных пользователем, здесь, параметр type имеет значение, если вы хотите, чтобы пользователь вводил одну строку в виде обычного текста, тогда type должно быть «простым текстом», если одна строка в защищенном тексте, то «secure-text», если это учетные данные для входатогда type должно быть "логин-пароль".Обратите внимание, что для Android вы не можете запросить ввод пользователя с помощью Alert, а AlertIOS доступен только для iOS.

Вывод: Я не знаю, почему typeявляется 4-м параметром Alert API, для Android этот параметр просто игнорируется, а для iOS этот параметр не имеет значения.Мое предположение состоит в том, что в первые дни, когда только что появился реакции на натив, они не писали API под названием AlertIOS, вместо этого у них было только Alert.Поскольку запрос на ввод данных пользователем доступен для устройств iOS, но не для устройств Android, в качестве четвертого параметра они вводят type, но игнорируют его, если приложение работает на устройстве Android.И со временем они создали API под названием AlertIOS, специально для оповещений iOS, но еще не устарели до параметра type.В любом случае, просто проигнорируйте параметр.

Чтобы ответить на другой вопрос: есть ли способ показать предупреждение без заголовка?

Да, если вы не хотите заголовок ИЛИ сообщение, просто передайтеnull на вызов API.

...