React-Native:如何创建多个原生UI组件实例



它在文档 https://facebook.github.io/react-native/docs/native-components-android.html 上说"ViewManagers是单例对象"

如果是这样,我将如何创建我的 UI 对象的另一个实例 - 例如在另一个屏幕上。

以下是我的代码的小片段:

.js:

import PropTypes from 'prop-types';
import React from 'react';
import { requireNativeComponent } from 'react-native';
var DataViewNative = requireNativeComponent('DataView', myClass);
class myClass extends React.Component {
  constructor() {
    super();
  }
  render() {
    return (
      <DataViewNative {...this.props} />
    );
  }
}
myClass.propTypes = {
  graphType: PropTypes.string,
};
module.exports = myClass;

原生 iOS (Swift):

@interface RCT_EXTERN_MODULE(DataViewManager, RCTViewManager)
@end

@objc(DataViewManager)
class DataViewManager: RCTViewManager {
  override func view() -> UIView! {
    return myCustomView()
  }
}

我希望能够做什么(js):叫:

 <myClass/>

在两个不同屏幕上的两个不同的 render() 方法中。发生的情况是,由于 RCTViewManager 是一个单例对象,因此对 view() 的调用将替换旧调用,因此只有最近的调用才会具有 UIView

事实证明,我在问题中写的"简化版本"实际上是答案。这是我的原始(不起作用)代码:

var view  = MyCustomView()
override func view() -> UIView! {
  return view
}

这违背了以下文档:https://github.com/facebook/react-native/blob/26d3af3421f0768cc2d4aeb354068ace3f7581e3/React/Views/RCTViewManager.h#L35-L42

相关内容

  • 没有找到相关文章

最新更新