React Native 学习笔记十四(原生模块之数据回调)
来源:互联网 发布:上知教育幼小衔接好吗 编辑:程序博客网 时间:2024/05/22 01:49
在使用原生模块的时候无法避免数据的获取 关于数据的获取 我这里模仿了网络请求获取数据 通过回调的方式 完成数据从java到js的传递
官网上 基本上都是坑 写这篇文章给想我一样的小白来看 大神级别的 勿喷
废话不说 上代码 实现思路和 上一篇文章一样 不会的朋友可以看看上一章
创建 NetMoudle.java 实现网络请求
package com.example.zhangyanjiao.helloreact.netMoudle;import android.util.Log;import com.facebook.react.bridge.Callback;import com.facebook.react.bridge.ReactApplicationContext;import com.facebook.react.bridge.ReactContextBaseJavaModule;import com.facebook.react.bridge.ReactMethod;/** * Created by zhangyanjiao on 16/9/20. */public class NetMoudle extends ReactContextBaseJavaModule { private static final String MOUDLE_NALE = "Net"; public NetMoudle(ReactApplicationContext reactContext) { super(reactContext); } @Override public String getName() { return MOUDLE_NALE; } /** * 创建给js调用的方法 将网络请求的结果以回调的方式传递给js * @param url * @param callback */ @ReactMethod public void getResult(String url, final Callback callback){ Log.e(MOUDLE_NALE,"正在请求数据"); new Thread(new Runnable() { @Override public void run() { try{// 模拟网络请求数据的操作 String result="我是请求结果"; Log.e(MOUDLE_NALE,"请求数据完成"); callback.invoke(true,result); }catch (Exception e){ Log.e(MOUDLE_NALE,"对不起,网络不给力"); } } }).start(); }}
注册
package com.example.zhangyanjiao.helloreact;import com.example.zhangyanjiao.helloreact.netMoudle.NetMoudle;import com.facebook.react.ReactPackage;import com.facebook.react.bridge.JavaScriptModule;import com.facebook.react.bridge.NativeModule;import com.facebook.react.bridge.ReactApplicationContext;import com.facebook.react.uimanager.ViewManager;import java.util.ArrayList;import java.util.Collections;import java.util.List;/** * Created by zhangyanjiao on 16/9/20. */public class RegistNetPackage implements ReactPackage { @Override public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) { List<NativeModule> modules = new ArrayList<>(); modules.add(new NetMoudle(reactContext)); return modules; } @Override public List<Class<? extends JavaScriptModule>> createJSModules() { return Collections.emptyList(); } @Override public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) { return Collections.emptyList(); }}
在mainActivity中进行添加(不会的看上一篇文章有完整代码)
.addPackage(new RegistNetPackage())
创建NativeGetResult.java封装方法
'use strict';import { NativeModules } from 'react-native';export default NativeModules.Net;
在js文件中使用
import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View, ToastAndroid } from 'react-native';import NatGetResult from './NetGetResult'import ToastShow from './ToastShow'var { NativeModules } = require('react-native'); class MyApp extends Component { constructor(props) { super(props); } render() { NatGetResult.getResult('http://baidu.com', (code,result)=>{ ToastShow.show('callback:'+code+result,ToastShow.LONG);}); return( <View > <Text>{'hahahhahhahah'}</Text> </View> ) } } AppRegistry.registerComponent('MyApp', () => MyApp);
0 0
- React Native 学习笔记十四(原生模块之数据回调)
- React Native 学习笔记十三(原生模块之Toast)
- React Native十四:原生模块
- react native 学习笔记----使用Android的原生模块
- React-Native 原生模块(iOS)调用
- React Native 学习笔记十二(嵌入原生应用 甚是坑啊)
- react native使用原生模块
- React Native使用指南-原生模块
- React Native创建原生模块
- react native使用原生模块
- React Native For Android学习之路-创建自定义原生模块
- React Native 原生模块开发笔记 (Android/iOS)
- 【稀饭】react native 实战系列教程之自定义原生模块
- React-Native开发之原生模块封装(Android)升级版
- React Native学习笔记之--向原生应用中集成RN页面
- React-Native与原生的模块桥接(一)
- React Native 原生模块封装、发布、调用 (Android)
- react native 学习笔记----封装Android的原生组件
- php中事务简单实例
- 一个 Java 的 Socket 服务器和客户端通信的例子
- mybatis的关联查询
- 单片机定时器概念和认识
- WinDbg调试 崩溃程序
- React Native 学习笔记十四(原生模块之数据回调)
- Unity 3d项目的崩溃收集机制
- php中事务实例应用
- 动软代码生成DBUtility的引用
- Newtonsoft.Json时间转换
- 安卓学习笔记---聊一聊Android 6.0的运行时权限
- 【第三周 项目1-顺序表的基本运算】
- 动态规划之背包问题(一)
- 数据结构 学习笔记(四):树(上):树的表示,二分查找,二叉树,先中后层次遍历