如何在ReactNative桥中的WritableMap对象上放置数组



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

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

如何创建数据并将其添加到ReadableArray中?

我认为您正在寻找WritableArray。你可以创建这样一个:

// Initialize an empty array
WritableArray array = new WritableNativeArray();
// Add items to array using its push methods, for example
array.pushString("test");
React Native Bridge的

Arguments有一个助手方法Arguments.fromList(list),它返回一个WritableArray,它是ReadableArray的子类,因此满足条件并准备传递给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),它具有与.fromList几乎相同的API和实现-两者都通过迭代列表arg来创建WritableArray,按类型推送每个项。我能看到的唯一区别是:

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

相关内容

  • 没有找到相关文章

最新更新