2

我正在为我的项目实现一个新的本机 UI 组件。出于某种原因,我需要使用一种方法同时设置 2 个属性。通过使用ReactProp,我只能设置一个这样的属性:

@ReactProp(name = "mode")
public void setMode(PDFLayoutView view, int mode) {
    view.PDFSetView(mode);
}

但是,如果我想设置例如srcpassword属性,我不能使用ReactProp注释。

@ReactProp(name = "src")
public void setMode(PDFLayoutView view, string src, string password) {
    view.setSrc(src, password);
}

我检查了https://facebook.github.io/react-native/docs/native-components-android#imageview-example并发现ReactPropGroup注释可能对我有帮助。但是没有关于如何使用它的示例。你能提供一个例子或其他解决方案来解决我的问题吗?

4

1 回答 1

2

使用 ReactPropGroup 的用法。

@ReactPropGroup(names = {"src","password"})
public void setMode(PDFLayoutView view, string src, string password) {
    view.setMode(src, password);
}

对参数使用条件语句的示例

@ReactPropGroup(names = {
    ViewProps.BORDER_RADIUS,
    ViewProps.BORDER_TOP_LEFT_RADIUS,
    ViewProps.BORDER_TOP_RIGHT_RADIUS,
    ViewProps.BORDER_BOTTOM_RIGHT_RADIUS,
    ViewProps.BORDER_BOTTOM_LEFT_RADIUS
}, defaultFloat = YogaConstants.UNDEFINED)
public void setBorderRadius(ReactEditText view, int index, float borderRadius) {
  if (!YogaConstants.isUndefined(borderRadius)) {
    borderRadius = PixelUtil.toPixelFromDIP(borderRadius);
  }

  if (index == 0) {
    view.setBorderRadius(borderRadius);
  } else {
    view.setBorderRadius(borderRadius, index - 1);
  }
}
于 2019-08-10T10:29:45.077 回答