2015-12-10 11 views
10

Próbuję zaimplementować natywny widok w rodzimym reagowaniu, ale mając pewne problemy z rekwizytami.Reakcja natywnego widoku niestandardowego, bez propType dla natywnego prop

Mam klasy CustomView rozszerzenie android.view.View ITS i ViewManager rozszerzenie com.facebook.react.uimanager.SimpleViewManager.

Wiązanie z React Odbywa się to w ten sposób:

'use strict'; 

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

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

Gdy używam go w moim React aplikacji, to zgłasza błąd:

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

To dlatego SimpleViewManager zdefiniowała pewne standardy Właściwość taka jak:

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

Mogę to naprawić, po prostu deklarując każdą nieruchomość w mojej ifa ce obiektu.

Nie chcę ręcznie wymieniać wszystkich rekwizytów, czy istnieje sposób na umieszczenie wszystkich tych rekwizytów w moim iface bez ich poznania?
Coś jak:

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

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

Odpowiedz

18

EDIT 02.06.2017:

React Native 0,44 jest przestarzała użycie View.propTypes. Zamiast tego, należy wykonać następujące czynności:

import { ViewPropTypes } from "react-native"; 

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

poprzedniej odpowiedzi:

Absolutnie:

var View = React.View; 

/* later... */ 
propTypes: { 
    ...View.propTypes, 
    myProp: PropTypes.string 
} 
Powiązane problemy