React Native中传给android的ReadableArray如何放入Map中?
我想用
//params是React Native通过函数传递给android中的函数的参数ReadableArrayWritableMap map = Arguments.createMap()
map.putArray("key", params);
但是这样总是报错null illegal type provided
有什么解决方法吗?
回答:
WritableMap 只支持存放:
- null
- Boolean
- Number
- String
- WritableArray
- WritableMap
这几种类型。
所以你需要把 ReadableArray 先转成 WritableArray,才能放入 WritableMap 中。
先自己定义一个转换方法(以下是一种比较通用的转换方法,如果你只想针对某个特定的 ReadableArray,你也可以自己实现):
private static WritableMap convertMap(ReadableMap map) { WritableMap temp = Arguments.createMap();
temp.merge(map);
return temp;
}
private static WritableArray convertArray(ReadableArray array) {
WritableArray temp = Arguments.createArray();
for (int i = 0; i < array.size(); i++) {
ReadableType type = array.getType(i);
switch (type) {
case Null:
temp.pushNull();
break;
case Boolean:
temp.pushBoolean(array.getBoolean(i));
break;
case Number:
temp.pushDouble(array.getDouble(i));
break;
case String:
temp.pushString(array.getString(i));
break;
case Array:
temp.pushArray(convertArray(array.getArray(i)));
break;
case Map:
temp.pushMap(convertMap(array.getMap(i)));
break;
default:
throw new Exception("Illegal type provided");
}
}
return temp;
}
然后再写入:
map.putArray("key", convertArray(params));
以上是 React Native中传给android的ReadableArray如何放入Map中? 的全部内容, 来源链接: utcz.com/p/945281.html