ReactNative读取Native本地文件
来源:互联网 发布:程序员真的会短命吗 编辑:程序博客网 时间:2024/06/03 17:01
1, LatticeMockModule.java 声明一个Native模块给RN提供调用
/**此类为RN提供读取配置文件的功能*/public class LatticeMockModule extends ReactContextBaseJavaModule { .... private final static String REACT_CLASS = "LatticeMockModule"; /**重写父类的方法*/ public LatticeMockModule(ReactApplicationContext reactContext) { super(reactContext); } /**重写父类的方法*/ @Override public String getName() { return REACT_CLASS; } ....}
2, LatticeMockModule.java 提供读取配置的方法
... private Map<String, String> configCache = new HashMap<>(); private final static String ASSET_PATH = "latticeConfig/"; ... /** 提供给RN调用读取配置的方法 *pageName= 页面名*/ @ReactMethod public void getConfig(String pageName, Promise promise) { String config = configCache.get(pageName); Context context = getReactApplicationContext(); if (TextUtils.isEmpty(config)) { config = ReadFromAsset(context, pageName); } //返回给RN处 promise.resolve(ReactArguments.toWritableMap(config)); configCache.put(pageName, config); } /**读取assts下的* latticeConfig/LatticeMockModule.json文件 private String ReadFromAsset(Context context, String pageName) { try { InputStream in = context.getAssets().open(ASSET_PATH + pageName + ".json"); BufferedReader bf = new BufferedReader(new InputStreamReader(in)); StringBuffer sb = new StringBuffer(); String line; while ((line = bf.readLine()) != null) { sb.append(line); } line = sb.toString(); return line; } catch (IOException e) { e.printStackTrace(); } return null; }
3,FReactPackage.java中注册此RN功能
public class FReactPackage extends MainReactPackage { .... @Override public List<NativeModule> createNativeModules(ReactApplicationContext reactApplicationContext) { List<NativeModule> nativeModuleList = super.createNativeModules(reactApplicationContext); List<NativeModule> list = new ArrayList<>(); list.addAll(nativeModuleList); list.add(new LatticeMockModule(reactApplicationContext)); return list; } ... }
4, 在RN页面中调用
import React, {Component,} from 'react'; const NativeModules = require('NativeModules');const LatticeMockModule = NativeModules.LatticeMockModule;class LatticeHomeScreen extends Component { //组件生命周期方法 componentDidMount() { LatticeMockModule.getConfig("LatticeHomeScreen").then((config)=> { alert(JSON.parse(config));//读取成功 }); }}module.exports = LatticeHomeScreen;
0 0
- ReactNative读取Native本地文件
- 读取本地文件
- 读取本地文件
- 读取本地文件
- 【ReactNative】react-native 布局
- 【ReactNative】react-native 布局
- 读取json 读取本地文件
- ReactNative文档翻译-------Native Modules
- ReactNative调用Native(Android)
- ReactNative 原生与Native交互
- MSSQL 读取本地文件数据
- JAVASCRIPT 读取本地文件
- js读取本地文件
- js读取本地文件
- Flex 实现读取本地文件
- flex实现读取本地文件
- AIR读取本地文件
- MSSQL 读取本地文件数据
- 运算符和语句
- linux下查找包含关键字的文件
- JavaSE思维导图
- C++::初识类(小白的进阶基石)
- JQuery动态查询并分页
- ReactNative读取Native本地文件
- position定位
- 【LeetCode】338. Counting Bits
- HTC Vive打包的UE4游戏全屏,铺满窗口的方法
- 方法的重写和重载
- ADB配置说明
- 大数/小数,大数%小数
- Edge detector
- 数据仓库系统的实现与使用(含OLAP重点讲解)