首页 > 解决方案 > 我可以使用 prop nativeID 在本机代码中定位视图吗

问题描述

是否可以将道具添加nativeID到如下视图中: <View nativeID="viewId">...</View> 然后使用该 ID 在我的本机 android 和 iOS 代码中定位视图,以便我可以在其上应用一些本机方法。如果它是一个例子,将不胜感激。

标签: react-nativereact-native-androidreact-native-ios

解决方案


是的,这是可能的。这里有两种情况,如果您使用的是 NativeModules 或 Native Component。

案例 1:NativeModules。我假设在这种情况下,您想在 JS 端单击按钮后在本机端定位视图。我还假设您知道如何在 react-native 中创建 NativeModules。好的,首先我们需要找到我们的视图绑定的根视图,并使用 React Native 提供的帮助类找到该视图。

代码:

@ReactMethod
public void locateView(String nativeViewId)
{
Activity activity = context.getCurrentActivity();
activity.runOnUiThread(new Runnable() {
  @Override
  public void run()
  {
     View rootView =  activity.getWindow().getDecorView().getRootView();
     View requiredView = ReactFindViewUtil.findView(rootView, nativeViewId);
     /** requiredView is your JSX view with nativeID found on Java Side, now you can apply your preferred native functions to it. **/
  }
});
}

如果您使用的是 NativeComponent,那么您可以使用以下代码轻松找到 rootView:

代码:

 View rootView = getRootView();

其余代码与使用 NativeModules 相同。希望这对你有帮助,如果你有任何问题,请随时问我。


推荐阅读