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

时间:2019-02-06 06:34:36

标签: android react-native native-module

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

我已经尝试过了:

@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

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

尽管我没有在文档中看到它,但在代码中已经看到了它

  

我们不支持方法重载,因为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函数中,该JavaScript函数使用if检查是否已设置初始值,然后调用适当的函数。

第二个和第三个选项使您可以将api与用户保持一致,因为他们只会与JavaScript进行交互。