2015-12-10 10 views
10

Ich versuche, eine native Ansicht in reaktiv-native zu implementieren, aber einige Probleme mit den Requisiten.Reagieren native benutzerdefinierte Ansicht, keine propType für native Prop

Ich habe eine Klasse CustomView Verlängerung der android.view.View und ihre ViewManager Verlängerung com.facebook.react.uimanager.SimpleViewManager.

Die Bindung mit React auf diese Weise durchgeführt wird:

'use strict'; 

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

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

Wenn ich es verwende in meinem Reagieren App, wirft er einen Fehler:

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

Diese weil SimpleViewManager hat einigen Standard definiert property like:

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

Ich kann es beheben nur jede Eigenschaft in meinem ifa deklarieren ce Objekt.

Ich möchte nicht alle Requisiten manuell auflisten, gibt es eine Möglichkeit, all diese Requisiten in mein iface zu setzen, ohne sie kennen zu müssen?
Etwas wie:

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

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

Antwort

18

EDIT 2017.06.02:

india Reagieren 0,44 hat die Verwendung von View.propTypes veraltet. Stattdessen gehen Sie wie folgt vor:

import { ViewPropTypes } from "react-native"; 

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

vorherigen Antwort:

Absolut:

var View = React.View; 

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