2

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

我试过这个:

@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);
}

但那些代码显示错误

开始有 0 个参数,预期为 1

任何人都可以帮助我吗?

4

1 回答 1

4

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

我们不支持方法重载,因为 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. 仅在 JavaScript 端公开public void start(int timer)并处理初始值
  3. 公开两个函数(具有不同的名称),然后将它们包装在一个 JavaScript 函数中,该函数使用 anif检查初始值是否已设置,然后调用适当的函数。

第二个和第三个选项允许您保持您的 api 对用户相同,因为他们只会与 JavaScript 交互。

于 2019-02-06T07:15:13.207 回答