Как передать компонент реакции как свойство собственного представления
Я пытаюсь создать собственное приложение с некоторыми компонентами пользовательского интерфейса и некоторыми компонентами 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)