Как добавить значение по умолчанию Native Bridge для Android в React Native - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть какой-то сервис, который нужно запускать несколько раз по пользовательскому вводу или заданному значению по умолчанию, поэтому мне нужно добавить параметр для его обработки,

Я пробовал это:

@ReactMethod
public void start(){
  start(1000);
}

@ReactMethod
public void start(int timer){
  Intent i = new Intent(reactContext, ServiceUploadData.class);
  i.putExtra("Interval", timer);
  reactContext.startService(i);
}

но этот код показывает ошибку

start получил 0 аргументов, ожидается 1

кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 06 февраля 2019

Хотя я не видел этого в документах, я видел это в коде

Мы не поддерживаем перегрузку методов, поскольку js видит функцию как объект независимо от количества параметров.

https://github.com/facebook/react-native/blob/master/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java

Чтобы обойти эту проблему, вы можете выполнить одно из следующих действий.

  1. Изменить имя public void start(), возможно, на public void startWithDefault()
  2. Предоставить только public void start(int timer) и обработать начальное значение на стороне JavaScript
  3. Предоставить обе функции (с разными именами), но затем обернуть их в функцию JavaScript, которая использует ifпроверить, установлено ли начальное значение, а затем вызвать соответствующую функцию.

Второй и третий вариант позволяют вам сохранять ваши API одинаковыми для пользователя, поскольку они будут когда-либо взаимодействовать только с JavaScript.

...