桥接和引用ReactNative iOS视图的多个实例

时间:2018-03-29 10:38:11

标签: react-native

我正在桥接到iOS视图,此视图被包装到ReactNative组件中。

因此使用requireNativeComponent('ViewName', null)检索视图。 e.g。

var CircleTableView = requireNativeComponent('CircleTableView', null);
var CircleTableViewManager = NativeModules.CircleTableViewManager;

doStuff() {
    CircleTableViewManager.doStuffInIos();
}

class NativeCircularList extends Component {

render() {
    return <CircleTableView/>
  }
}

在我的ReactNative主要组件中,我使用了这个包装组件两次。 e.g。

render() {
    return (
        <View>
          <NativeCircularList/>
          <NativeCircularList/>
        <View>
    )

在iOS RCTViewManager中,我保留了对view()方法中创建的视图的引用,以便稍后我可以在doStuffInIos()中使用它。

e.g。

@objc(CircleTableViewManager)
class CircleTableViewManager : RCTViewManager {

    var coolCircleTableView: CoolCircleTableView!

    override func view() -> UIView! {

      coolCircleTableView = CoolCircleTableView();

      return coolCircleTableView;
    }

    @objc func doStuffInIos() {
      DispatchQueue.main.async() {
        self.coolCircleTableView.doStuff()
      }  
    }
}

但是,RCTViewManager似乎是一个应用程序范围的单例,这意味着当为小部件的第二个实例调用view()时,将出现第一个调用的引用。事实上,文档声明必须为每次调用返回一个新的实例到view(),这很好,但我希望能够在某些时候使用这些实例!

是否有支持同一iOS(和/或Android)桥接视图的多个实例的模式?

由于

0 个答案:

没有答案