代码之家  ›  专栏  ›  技术社区  ›  flix

如何在React Native中添加本机网桥Android的默认值

  •  2
  • flix  · 技术社区  · 6 年前

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

    我尝试过:

    @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 回复  |  直到 6 年前
        1
  •  1
  •   Andrew    6 年前

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

    我们不支持方法重载,因为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. 公开这两个函数(名称不同),但将它们包装在使用 if 要检查是否设置了初始值,请调用相应的函数。

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