如何在 React Native 中添加 Native Bridge 默认值 Android

How to add default value of Native Bridge Android in React Native

我有一些服务需要通过用户输入或给定的默认值重复启动,所以我需要添加参数来处理它,

我试过这个:

@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 got 0 arguments, expected 1

谁能帮帮我?

虽然我没有在文档中看到它,但我在代码中看到了这个

We do not support method overloading since js sees a function as an object regardless of number of params.

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 交互。