I tried to export wechat sdk as a native module.
I copied some codes here:
public class WeChatModule extends ReactContextBaseJavaModule implements IWXAPIEventHandler {
private String appId;
public WeChatModule(ReactApplicationContext context) {
super(context);
}
@Override
public String getName() {
return "RCTWeChat";
}
}
I used "RCTWeChat" as the module name, I did not know the "RCT" prefix meanings.
ReactContextBaseJavaModule requires that a method called getName is implemented. The purpose of this method is to return the string name of the NativeModule which represents this class in JavaScript.
Then I encountered error in my react-native JS codes.
import {NativeModules} from 'react-native';
const { RCTWeChat } = NativeModules;
WeChat or NativeModules.RCTWeChat always undefined.
Cause
RCT is a prefix used in react native, it will be removed when exported to JS.
React Native uses RCT as a prefix. In order to avoid name collisions, we recommend using a three-letter prefix other than RCT in your own classes.
Solution
The correct JS codes:
const { WeChat } = NativeModules;