Как передать компонент реакции как свойство собственного представления

Я пытаюсь создать собственное приложение с некоторыми компонентами пользовательского интерфейса и некоторыми компонентами React. Мне нужен собственный компонент пользовательского интерфейса, который принимает компонент реагирования как свойство и отображает его как подпредставление.

Я прошел нормальный процесс создания собственного компонента пользовательского интерфейса и использовал RCT_EXPORT_VIEW_PROPERTY(view, RCTView) чтобы получить вид собственности.

PagedUIViewManager.swift:

@objc(PagedUIViewManager)
class PagedUIViewManager: RCTViewManager {
  override func view() -> UIView! {
    return PagedUIView();
  }
  override static func requiresMainQueueSetup() -> Bool {
    return true
  }
}

PagedUIView.swift:

class PagedUIView: UIView {
  @objc var view: UIView {
    didSet {
      for subview in self.subviews {
        subview.removeFromSuperview()
      }
      self.addSubview(view)
    }
  }
  override init(frame: CGRect) {
    self.view = UIView(frame: frame)
    super.init(frame: frame)
    self.addSubview(view)
  }
}

PagedUIViewManager.m:

#import "React/RCTViewManager.h"
@interface RCT_EXTERN_MODULE(PagedUIViewManager, RCTViewManager)
RCT_EXPORT_VIEW_PROPERTY(view, RCTView)
@end

PagedUINativeView.js:

const PagedUI = requireNativeComponent("PagedUIView");
export default class PagedUIView extends React.Component {
  render() {
    return <PagedUI {...this.props}/>;
  }
}

использование:

<PagedUIView view={<ComponentToRender />} />

Я ожидал, что представление покажет <ComponentToRender />, но вместо этого я получаю ошибку времени выполнения "Нарушение инварианта: 435,PagedView,1,[объект объекта] не может использоваться в качестве аргумента собственного метода".

0 ответов

В настоящее время это невозможно, это единственный способ передать представления в собственные модули, передающие представление как дочерние.

Вы можете получить представление, используя:

@objc override func insertReactSubview(_ subview: UIView!, at atIndex: Int)
Другие вопросы по тегам