要与Android通信以ReactNative,我使用RCTEventEmitter。使用此,我需要将数组解析到RN端,此数组应设置在WritableMap对象上。在WritableMap对象上,可以放置如下所示的数组,
RCTEventEmitter
WritableMap
void putArray(@NonNull String key, @Nullable ReadableArray value);
如何在ReadableArray中创建和添加数据?
ReadableArray
zbwhf8kr1#
我认为您正在寻找WritableArray。您可以创建一个如下所示的数组:
// Initialize an empty array WritableArray array = new WritableNativeArray(); // Add items to array using its push methods, for example array.pushString("test");
eufgjt7s2#
React Native Bridge中的Arguments具有一个helper方法Arguments.fromList(list),该方法返回WritableArray,WritableArray是ReadableArray的子类,因此满足条件并准备传递给putArray。例如,获取一个列表并将其作为数组属性推送到JS事件:
Arguments
Arguments.fromList(list)
WritableArray
putArray
Kotlin:
import com.facebook.react.bridge.Arguments // ... val params = Arguments.createMap().apply { putArray("data", Arguments.fromList(someList)) // ...put more params }
** java **:
import com.facebook.react.bridge.Arguments; // ... WriteableArray array = Arguments.fromList(someList); WritableMap params = Arguments.createMap(); params.putArray(array); // ...put more params
将这些传递给.emit("SomeEvent", params),JS应接收{ data: [...someList] }。还有Arguments.makeNativeArray(list),它的API和实现与.fromList几乎相同--都是通过迭代列表参数来创建WritableArray,按类型推送每个项。
.emit("SomeEvent", params)
{ data: [...someList] }
Arguments.makeNativeArray(list)
.fromList
.makeNativeArray
null
2条答案
按热度按时间zbwhf8kr1#
我认为您正在寻找WritableArray。您可以创建一个如下所示的数组:
eufgjt7s2#
React Native Bridge中的
Arguments
具有一个helper方法Arguments.fromList(list)
,该方法返回WritableArray
,WritableArray
是ReadableArray
的子类,因此满足条件并准备传递给putArray
。例如,获取一个列表并将其作为数组属性推送到JS事件:
Kotlin:
** java **:
将这些传递给
.emit("SomeEvent", params)
,JS应接收{ data: [...someList] }
。还有
Arguments.makeNativeArray(list)
,它的API和实现与.fromList
几乎相同--都是通过迭代列表参数来创建WritableArray
,按类型推送每个项。.fromList
显式处理嵌套数组.makeNativeArray
显式处理null
(返回空数组)