android 如何在ReactNative桥中将数组放在WritableMap对象上

sxissh06  于 2023-01-11  发布在  Android
关注(0)|答案(2)|浏览(195)

要与Android通信以ReactNative,我使用RCTEventEmitter。使用此,我需要将数组解析到RN端,此数组应设置在WritableMap对象上。在WritableMap对象上,可以放置如下所示的数组,

void putArray(@NonNull String key, @Nullable ReadableArray value);

如何在ReadableArray中创建和添加数据?

zbwhf8kr

zbwhf8kr1#

我认为您正在寻找WritableArray。您可以创建一个如下所示的数组:

// Initialize an empty array
WritableArray array = new WritableNativeArray();

// Add items to array using its push methods, for example
array.pushString("test");
eufgjt7s

eufgjt7s2#

React Native Bridge中的Arguments具有一个helper方法Arguments.fromList(list),该方法返回WritableArrayWritableArrayReadableArray的子类,因此满足条件并准备传递给putArray
例如,获取一个列表并将其作为数组属性推送到JS事件:

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,按类型推送每个项。

  • .fromList显式处理嵌套数组
  • .makeNativeArray显式处理null(返回空数组)

相关问题