React Native中传给android的ReadableArray如何放入Map中?

我想用

//params是React Native通过函数传递给android中的函数的参数ReadableArray

WritableMap 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

回到顶部