美文网首页
Android与React Native之间传递参数

Android与React Native之间传递参数

作者: 米奇小林 | 来源:发表于2018-04-18 19:45 被阅读205次

官方提供了这8种参数类型进行原生与ReactNative之间的转换,基本类型的参数传递很简单,利用官方重新定义的CallBack接口的invoke方法可以直接进行传递,但是集合与数组却没有明确的示例,导致原生端传递过去的JSON数组,js端必须要JSON.parse才可以认出,这很不爽。

观察着8种参数类型其中有ReadableMap 和 ReadableArray类型,对应JavaScript的Object和Array。这个很重要!!!

其对应接口WritableMap和WritableArray接口,以及实现了他们的WritableNativeMap和WritableNativeArray,

(也可以通过 Arguments.createMap()Arguments.createArray())来获取对应的对象。

Boolean -> Bool
Integer -> Number
Double -> Number
Float -> Number
String -> String
Callback -> function
ReadableMap -> Object
ReadableArray -> Array

1.如果传递对象:

    @ReactMethod
    public void getUserInfo(Callback callback){
        WritableMap map = Arguments.createMap();
        map.putString("islogin",MainApplication.getApplication().isLogin()+"");
        map.putString("nick_name", getApplication().getNickname());
        map.putString("user_name", getApplication().getUsername());
        map.putString("avatar_url", getApplication().getTouxiang());
        map.putString("access_token",getApplication().getAccess_token());
        map.putString("uid",getApplication().getUid()+"");
        map.putString("gender_str", getApplication().getSex());
//        promise.resolve(map);
        callback.invoke(map);
    }

2.如果传递json数组:

    @ReactMethod
    public void getAllGameList(Callback callback){
        ArrayList<Game> games = MainApplication.getApplication().getGames();
        WritableArray arrays = Arguments.createArray();
        for (Game game:games){
            WritableMap map = Arguments.createMap();
            map.putString("name",game.name);
            map.putString("thumbnail_url",game.thumbnail_url);
            .....
            arrays.pushMap(map);
        }
        callback.invoke(arrays);
    }

相关文章

网友评论

      本文标题:Android与React Native之间传递参数

      本文链接:https://www.haomeiwen.com/subject/beebkftx.html