react-native - 我可以使用 prop nativeID 在本机代码中定位视图吗
问题描述
是否可以将道具添加nativeID
到如下视图中:
<View nativeID="viewId">...</View>
然后使用该 ID 在我的本机 android 和 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 相同。希望这对你有帮助,如果你有任何问题,请随时问我。