React Native系列之Native Modules
先来看下官网对于Native Modules的描述:
上面大概的意思是说,我们有时后需要用的API,RN并没有提供。而且我们可能会想用一些现成的java代码,或者写一些高质量、多线程的代码等等。
这篇博客我们只说第一种,其他3中只是大概看下文档,就不写demo了哈。 package com.text;
import android.widget.Toast;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import java.util.HashMap;
import java.util.Map;
public class ToastModule extends ReactContextBaseJavaModule{
private static final String DURATION_SHORT_KEY="SHORT";
private static final String DURATION_LONG_KEY="LONG";
public ToastModule(ReactApplicationContext reactContext){
super(reactContext);
}
@Override
public String getName() {
return "ToastAndroid";
}
@Override
public Map<String,Object> getConstants(){
final Map<String,Object> constans=new HashMap<>();
constans.put(DURATION_SHORT_KEY,Toast.LENGTH_SHORT);
constans.put(DURATION_LONG_KEY,Toast.LENGTH_SHORT);
return constans;
}
@ReactMethod
public void show(String message,int duration){
Toast.makeText(getReactApplicationContext(),message,duration).show();
}
}
接下来的步骤,注册Modules,这里我和官网的介绍有一点不一样。由于我是直接在原来的上面修改的。所以,我这里不需要写一个实现ReactPackage接口得类,直接在MainReactPackage中修改就行。 最后,在js中调用(我这里还用的上次的demo) var {NativeModules} = require('react-native');
module.exports = NativeModules.ToastAndroid;
var ToastAndroid=require('ToastAndroid');
ToastAndroid.show('quanshijie',ToastAndroid.SHORT);
直接上效果图: 参考资料:Native Modules官方文档 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |