您需要连接组件:
public class MyComponent extends Activity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myComponent);
...
}
...
}
我为它创建了一个类Manager:
public class MyComponentManager extends SimpleViewManager<MyComponent> {
public static final String REACT_CLASS = "MyComponent";
@Override
public String getName() {
return REACT_CLASS;
}
private ThemedReactContext mContext = null;
private Activity mActivity = null;
@Override
protected MyComponent createViewInstance(ThemedReactContext context) {
mContext = context;
return new MyComponent(mContext);
}
public MyComponentManager(Activity activity) {
mActivity = activity;
}
}
, 类Package:
public class MyComponentPackage implements ReactPackage {
private Activity mActivity = null;
public MyComponentPackage(Activity activity) {
mActivity = activity;
}
@Override
public List<NativeModule>
createNativeModules(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
@Override
public List<Class<? extends JavaScriptModule>> createJSModules() {
return Collections.emptyList();
}
@Override
public List<ViewManager>
createViewManagers(ReactApplicationContext reactContext) {
return Arrays.<ViewManager>asList(
new MyComponentManager(mActivity)
);
}
}
并将其放入文件中myComponent.js:
import React from 'react';
import {
View,
requireNativeComponent
} from 'react-native';
export default requireNativeComponent('MyComponent');
只有在MyComponentManager应该SimpleViewManager服务class extends View,但对我来说 - Activity。如何连接我的组件?
您的组件是否需要从 Activity 继承?如果不需要 - 做一个自定义视图:
一般情况下,只需要在 MainApplication.java 文件中注册 Package 类即可:
在此之前,当然,您可以自己想到,但官方手册中对此只字未提的事实具有误导性。您还需要在 myComponent.js 中指定默认属性类型:
您不需要从视图继承我的活动,而只需从视图类中运行它: