android - react native 自定义 View , native Prop 没有 propType

标签 android react-native

我正在尝试在 react-native 中实现原生 View ,但在使用 props 时遇到了一些问题。

我有一个类 CustomView 扩展 android.view.View 及其 ViewManager 扩展 com.facebook.react.uimanager .SimpleViewManager.

与React的绑定(bind)是这样完成的:

'use strict';

var { requireNativeComponent, PropTypes } = require('react-native');

var iface = {
    name: 'CustomView',
    propTypes: {
        myProp: PropTypes.string
    },
};
module.exports = requireNativeComponent('CustomView', iface);

当我在我的 React 应用程序中使用它时,它会抛出一个错误:

`CustomView` has no propType for native prop `CustomView.renderToHardwareTextureAndroid` of native type `boolean`

这是因为 SimpleViewManager 定义了一些标准属性,例如:

@ReactProp(name = PROP_BACKGROUND_COLOR, defaultInt = Color.TRANSPARENT, customType = "Color")
public void setBackgroundColor(T view, int backgroundColor) {
    view.setBackgroundColor(backgroundColor);
}

我可以修复它,只需在我的 iface 对象中声明每个属性即可。

我不想手动列出所有 Prop ,有没有办法在我不知道它们的情况下将所有 Prop 放在我的 iface 中?
像这样的东西:

var {standardViewProps} = require('react-native');

var iface = {
    name: 'CustomView',
    propTypes: {
        ...standardViewProps,
        myProp: PropTypes.string
    }
}

最佳答案

编辑 2017/06/02:

React Native 0.44 已弃用 View.propTypes。相反,请执行以下操作:

import { ViewPropTypes } from "react-native";

/* later... */
propTypes: {
    ...ViewPropTypes,
    myProp: PropTypes.string
}

上一个答案:

绝对:

var View = React.View;

/* later... */
propTypes: {
    ...View.propTypes,
    myProp: PropTypes.string
}

关于android - react native 自定义 View , native Prop 没有 propType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34205412/

相关文章:

android - 如何设置 fable-elmish-react native 应用程序?

javascript - 我该如何解决这个问题 : "node_modules/expo/AppEntry.js: [BABEL]"?

ios - React Native ListView 加载缓慢

javascript - 分配给属性的 function() 未在 React Native 中执行

java - OnSensorChanged线程

android - 带有不可选择的灰色前缀的 EditText

android:如何获取存储在 sdcard 文件夹中的文件的完整路径?

android - Firebase ValueEventListener 返回不存在的键

android - 有什么方法可以从 webview 中隐藏元素? (安卓)

javascript - 世博会命令抛出 "Error: Cannot find module ' minizlib'"