2015-12-10 46 views
10

ネイティブ・ビューをネイティブ・ネイティブで実装しようとしていますが、ネイティブ・カスタム・ビューに反応します。ネイティブ・プロップのpropTypeはありません。

私は、android.view.Viewを延長するクラスCustomViewと、そのViewManagerを延長するcom.facebook.react.uimanager.SimpleViewManagerを持っています。

と反応して結合がこの方法で行われている:私はアプリを反応させるのに私にそれを使用する場合

'use strict'; 

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

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

、それはエラーがスローされます。

`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); 
} 

私はそれを修正することができます私のifaオブジェクト。

手作業ですべての小道具をリストしたくないのですが、小道具の中に小道具を置く方法はありますか?以下のような
何か:

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

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

答えて

18

EDITの2017年6月2日:

ネイティブ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 
} 
関連する問題